#php #apache #.htaccess #url-rewriting
#php #apache #.htaccess #url-переписывание
Вопрос:
Я знаю, что есть несколько вопросов об этом типе проблем, но с ними я не мог понять, что не так с моим..
.htaccess
RewriteEngine On
RewriteRule ^([a-zA-Z0-9]*)$ index.php?id=$1 [NC,L]
<FilesMatch "admin.php">
AuthName "Member Only"
AuthType Basic
AuthUserFile D:/web/shorten/.htpasswd
require valid-user
</FilesMatch>
файловая система
shorten
- .htaccess
- .htpasswd
- admin.php
- index.php
Итак, план состоит в том, чтобы переписать все буквенно-цифровое в index.php?id=stuff — работает нормально. но почему-то это неправильно, когда регулярное выражение совпадает со словом admin. Результат, который я получаю, — admin/?id=admin, что, конечно, приводит к 404.
Доступ admin.php напрямую работает нормально, как и ожидалось, с авторизацией и всем остальным.
Похоже, у него проблема с существующим admin.php , но почему и как этого избежать?
Комментарии:
1. когда вы пишете admin в URL, он проходит
index.php?id=admin
, а когда вы проходите admin.php он работает нормально, поэтому я думаю, вам нужно проверить, что вы должны делать, когда id имеет значение admin, вот что я получаю.2. на данный момент index просто печатает значение id, пока никакой обработки. но если это работает для вас, я думаю, это что-то с моими настройками apache? РЕДАКТИРОВАТЬ: прочитайте ваш комментарий неправильно — проблема в том, что он не передает admin via
?id=admin
, он просто делает какое-то странное перенаправлениеadmin/?id=admin
.3. Проверьте, включен ли
MultiViews
параметр on в настройках Apache. Если вы это сделаете, попробуйте отключить его с помощью:Options -MultiViews.
. Если Apache не находит файл (в вашем случаеadmin
) и MultiViews включен, Apache будет искать в папке любой файл с таким именем. В вашем случаеadmin.*
(который у вас есть).4.
MultiViews
отсутствует в параметрах для этого каталога (или любого другого, если на то пошло).5. Попробуйте явно отключить его в любом случае, если он установлен глобально. Возможно, проблема не в этом, а в ошибке. (недавно была очень похожая проблема, когда ее отключение решило ее) 🙂
Ответ №1:
Забавная история..
Chrome (в конечном итоге и другие браузеры) перенаправляет кэш. Насколько я читал, это только для 301, но похоже, что все они кэшируются.
Таким образом, странное перенаправление было просто неправильным, вызванным возней с перенаправлениями.
В любом случае спасибо за попытку мне помочь. 🙂
Комментарии:
1. собираюсь отметить это как правильное как можно скорее, ПОЭТОМУ, по-видимому, хочет, чтобы я проверял свои факты в течение 2 дней..