Назад | Перейти на главную страницу

Отладка правила перезаписи htaccess; 2-я группа захвата (2 $) пуста

Я видел, как эта проблема возникала у других людей, но в их случаях была проблема с их регулярным выражением. Быстрая поездка на regexpal.com показала мне, что это не так. У меня есть простой файл htaccess, который позволяет мне записывать URL-адреса в формате «.htm» или «.html», а не «.php». Я недавно обнаружил, что у этого сценария есть проблемы при работе со строками запроса (? Аргумент = значение). Вот мой полный код .htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html?\??(.*)$ $1.php?$2 [nc]

Когда я печатаю строку запроса своего запроса, она всегда оказывается пустой, и, конечно же, проверка array_key_exists не находит идентификатор, который я пытаюсь указать. Я мало работаю с Apache, но я думал, что это будет довольно просто.

Если это важно, этот htaccess применяется поверх относительно простой настройки XAMPP. Не думаю, что я вообще что-то сделал с файлом httpd.conf. Я могу попытаться предоставить любую другую информацию, которая, по мнению людей, может быть актуальной.

Упростите это:

RewriteRule ^(.*)\.html?\??(.*)$ $1.php?$2 [nc]

К этому:

RewriteRule (.*)\.html?$ $1.php [NC,QSA]

Начальный ^ не нужно, так как .* уже соответствует чему-либо. А сохранение строки запроса вручную - это (а) проблематично и (б) совершенно нелогично, поскольку Флаг QSA (добавление строки запроса) будет обрабатывать все это внутренне.