Работает вторая заметка RewriteRule - PullRequest
0 голосов
/ 12 января 2019

У меня есть страница PHP типа example.com/new/info.php?title=example. .htaccess находится в папке /new/. Я попробовал это в главном каталоге также. Мой .htaccess выглядит так:

ErrorDocument 404 /404.php

RewriteEngine On

RewriteRule ^([a-zA-Z0-9_-]+)$ page.php?title=$1 [QSA,L,NC]

RewriteRule ^info/([a-zA-Z0-9_-]+)/$ info.php?title=$1 [QSA,L,NC]

Первое правило работает, но второе не отправляет GET['title'] на сервер. Сайт info.php загружается, но без переменной. Я проверил его на своем локальном хосте, и он работает. Я загружаю его в свое веб-пространство, и второе правило не работает.

Я пробовал тоже без новой директории example.com/info.php?title=example и тоже не работает.

В чем моя ошибка?

1 Ответ

0 голосов
/ 13 января 2019

Звучит так, как будто вы включили MultiViews (возможно, в конфигурации сервера). Вам нужно отключить MultiViews, чтобы это работало. Добавьте в начало файла .htaccess следующее:

Options -MultiViews

При включенном MultiViews mod_negotiation выдаст внутренний подзапрос для info.php при выполнении запроса для /info/example/ - до обработки правила mod_rewrite, поэтому параметры не передаются.

...