Поэтому у меня есть это правило
# Rewrite for account view RewriteRule ^([^/]+)/([^/]+)/?$ account.php?type=$1&user=$2 [NC,L]
которые переводятся на http://www.site.com/user/s2xi
но теперь я хочу получить еще более творческий подход к URL-адресу и добавить к нему тему:
http://www.site.com/user/s2xi/theme/slate/
так что я могу, например, получить доступ к файлу CSS для темы, мне просто нужно было бы ввести
http://www.site.com/user/s2xi/theme/slate/css/slate.css
как я могу изменить или добавить другой RewriteRule, чтобы получить результаты, которые я хочу?
также, как я мог бы применить и получить доступ к моим файлам тем с новым URL-адресом в моем PHP-коде?
мой текущий путь к моим темам – library/themes/users/slate
с подпапками /css
и /js
Моя попытка:
# Rewrite for user theme location RewriteRule ^([^/]+)/([^/]+)/theme/([^/]+)/?$ account.php?type=$1&user=$2$theme=$3 [NC,L]
Я предлагаю перенаправить все запросы в один файл, например index.php
а затем получить URL-адрес с помощью $_SERVER['REQUEST_URI']
. Затем вы можете использовать эти данные и, например, взорвать его. Затем вы сможете динамически определять, какая страница будет загружена.
Вы можете использовать следующий код для перенаправления всех запросов на index.php
:
RewriteEngine on RewriteRule .* index.php
Вы также можете исключить определенные типы файлов из перенаправления в этот файл PHP. Например, статический контент, такой как CSS, JavaScript и т. Д. Следующий код, например, исключает все файлы с расширением CSS, JS, PNG или JPG:
RewriteEngine on RewriteRule !\.(css|js|png|jpg)$ index.php
Чтобы исключить все существующие файлы, вы можете использовать следующий код:
RewriteEngine on RewriteCond %{REQUEST_fileNAME} !-f RewriteRule .* index.php
Вы можете поместить остальную часть пути в третий get parametar:
RewriteRule ^ ([^ /] +) / ([^ /] +) /? (. *) $ Account.php? Type = $ 1 & user = $ 2 & rest_of_the_url = $ 3 [NC, L]
[РЕДАКТИРОВАТЬ]
Хорошо, для вас случай, я думаю, вы должны написать .htaccess перенаправить, так что для css и js-файла apache идет прямо к ним. Потому что обработка php будет ненужными накладными расходами, если вы не хотите проверять учетные данные пользователя или что-то в этом роде.
RewriteRule ^ ([^ /] +) / ([^ /] +) / theme / ([^ /] +) / (. + \. (?: css | js | png | jpg)) $ / library / themes / users / $ 3 / $ 4 [NC, L]