.htaccess неправильно перенаправляет на определенные «слова»

#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 дней..