RewriteRule index.php?url=$1 [QSA, L]
Я думаю, у вас есть несколько вопиющих опечаток (?) В вашем вопросе, которые делают эту директиву полностью недействительной ... вы пропускаете шаблон RewriteRule
так что это на самом деле ничего не будет совпадать, и ошибочный пробел в аргументе flags синтаксически неверен, что приведет к ответу 500 Internal Server Error?!
Директива RewriteRule
должна быть записывается так:
RewriteRule ^([\w/-]+)$ index.php?url=$1 [QSA,L]
^([\w/-]+)$
соответствует URL-пути, содержащему любой из символов: a-z
, A-Z
, 0-9
, _
(подчеркивание), /
(sla sh) и -
(дефис). Я исключил точку, которая, естественно, является частью настоящих имен файлов.
Вы также должны убедиться, что MultiViews отключен, чтобы mod_negotiation не переписывал запрос до mod_rwrite
- так как ваши запросы "без расширения" появляются для сопоставления непосредственно с именами файлов. например. /user
отображается на /user.php
. Поместите следующее в начало вашего .htaccess
файла:
Options -MultiViews
Но когда мне дали sla sh на мой URL, он перестает показывать CSS или другие каталоги IMG.
Это не проблема с .htaccess
, но вызвана использованием относительных клиентских URL-адресов для ваших ресурсов * stati c. Когда вы запрашиваете URL /user/anonymous
, браузер разрешает любые относительные URL относительно до /user/anonymous
(не документ root - что, вероятно, является тем, что вы ожидаете). Если у вас есть относительный URL к css/styles.css
, то браузер естественным образом разрешит это до /user/css/styles.css
- который, вероятно, не существует (и, вероятно, будет переписан в index.php
- но это не так. не проблема - проблема в том, что он не существует).
Если вы посмотрите на сетевой трафик c (HTTP-запросы) в браузере, он должен дать вам подсказку, как что происходит.
Вам нужно изменить URL-адреса на стороне клиента, чтобы использовать root -относительные (начиная с sla sh) или абсолютные (схема + имя хоста) URL-адреса для решения этой проблемы.
См. мой ответ на следующий вопрос в стеке веб-мастеров, который объясняет это далее: