В опубликованных вами конфигурационных файлах сервера нет ничего, что могло бы привести к перезаписи l oop - в конфигурации вашего сервера нет перезаписей.
I Я попытался удалить мой htaccess и использовать .php?s=$var
, и я все еще получаю ту же ошибку
Это озадачивает. Есть ли у вас другие .htaccess
файлы в подкаталогах? Без каких-либо файлов .htaccess
и с конфигурацией сервера, которую вы опубликовали, было бы невозможно получить перезапись l oop - поскольку у вас не было бы перезаписей вообще!
Однако ваше последнее правило блок, который добавляет расширение .php
, может привести к перезаписи l oop при определенных условиях. Это должно быть исправлено. В настоящее время у вас есть:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
Проблема заключается в том, что 2-е условие, проверяющее наличие <filename>.php
, не обязательно выполняет ту же проверку файла, что и следующая RewriteRule
переписал бы на. например. Запрос /foo/bar
, где существует /foo.php
, приведет к перезаписи l oop.
Чтобы решить эту проблему, вам нужно будет вместо этого заменить второе условие на что-то вроде следующего:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
См. мой ответ на следующий вопрос ServerFault, который объясняет это более подробно:
Итак, полное правило становится таким:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule ^(.*)$ $1.php [L]
Вы также должны убедиться, что MultiViews отключен (если не уже), так как ваши URL-адреса отображаются непосредственно на файлы с расширением .php
(в противном случае) mod_negotiation перезапишет URL - до mod_rewrite - и вы потеряете параметры URL). В верхней части вашего .htaccess
файла:
Options -MultiViews