Ответ 1
Вы можете использовать дополнительное правило, чтобы остановить процесс перезаписи:
RewriteRule ^THEMES/ - [L]
RewriteRule ^([a-zA-Z][a-zA-Z0-9]*)$ index.php?m=$1
RewriteRule ^([a-zA-Z][a-zA-Z0-9]*)/(.+)$ index.php?m=$1&p=$2
Я пишу CMS в PHP, и теперь я работаю над функцией тем. У меня есть файл .htaccess:
RewriteEngine ON
RewriteRule ^([a-zA-Z][a-zA-Z0-9]*)$ index.php?m=$1
RewriteRule ^([a-zA-Z][a-zA-Z0-9]*)/(.+)$ index.php?m=$1&p=$2
Если у меня есть запрос:
/page
он должен загрузить функцию просмотра класса, называемого страницей.
Если у меня есть запрос:
/page/test
он должен загрузить функцию просмотра класса, называемого страницей, с параметром 'test'. Все это работает,
Но я хочу, чтобы он применял RewriteRules ТОЛЬКО, если запрос НЕ начинается с:
/THEMES/
Поэтому я могу применять стили CSS и т.д.
Может ли кто-нибудь мне помочь? Спасибо.
Вы можете использовать дополнительное правило, чтобы остановить процесс перезаписи:
RewriteRule ^THEMES/ - [L]
RewriteRule ^([a-zA-Z][a-zA-Z0-9]*)$ index.php?m=$1
RewriteRule ^([a-zA-Z][a-zA-Z0-9]*)/(.+)$ index.php?m=$1&p=$2
Добавьте это перед правилами перезаписи:
RewriteCond %{REQUEST_URI} !^/THEMES/
Сделайте что-то вроде:
RewriteRule ^THEMES - [L]
Это означает: если запрос начинается с THEMES, просто выполните его.
Еще одно возможное решение:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Это означает: не переписывайте, если запрос разрешается в существующий файл (первая строка) или каталог (вторая строка).
Возможно, вы должны прочитать документацию, на самом деле хорошо написано.
Если вы хотите включить файлы css/js при использовании url-rewriting, используйте этот тег, чтобы указать основной URL-адрес.
< base href="#" onclick="location.href='http://www.your-web-site-adress.com'; return false;" >
Затем вы можете легко включить ваши файлы css/js следующим образом:
< script src="/blabla.js" >
он добавит base href в качестве префикса.