Разрешить GET Переменная внутри HTACCESS Переписать - PullRequest
0 голосов
/ 23 мая 2011

Сейчас у меня есть правило переписывания, которое выглядит следующим образом:

RewriteRule ^product-([a-z^-]+).php /sample.php?m=$1

Если я попытаюсь перейти к «product-test.php», он будет работать нормально.

Если я попытаюсь перейти к «product-test.php? Variable = 1», он не будет работать.

Как изменить правило перезаписи, чтобы разрешить использование переменной GET?

ПРИМЕЧАНИЕ: переменная GET должна содержать только буквы (Aa-Zz) и тире (-).

1 Ответ

2 голосов
/ 24 мая 2011

Я считаю, что это должно читаться как

RewriteRule ^product-([A-Za-z\-]+).php /sample.php?m=$1&%{QUERY_STRING}

Обратите внимание на обратную косую черту, выходящую из тире.Тире является оператором в соответствующей части, поэтому его необходимо экранировать.

Кроме того, чтобы включить переменные GET с переписанным URL-адресом без их перезаписи, добавьте идентификатор строки запроса в конец.

Это перезапишет:

www.example.com/product-widget.php?variable=12

до

www.example.com/sample.php?m=widget&variable=12

Это то, к чему, я полагаю, вы стремитесь.

С учетом вышесказанного я не уверен, что экранирование на самом деле работает, поскольку я только что обнаружил проблему с использованием тире в своих переписанных URL-адресах, которую я не могу решить.Как будто модуль переписывания Apache 1.3.33 не любит тире в строке перезаписи.В любом случае, так должно работать, и это работает на моем сервере.

...