Изменить GET-URL на канонический (mod_rewrite) - PullRequest
0 голосов
/ 03 апреля 2011

Для моей поисковой системы у меня есть страница ...

/ index.php? Q = TERM

..., которая отображает результаты поиска.

Используя mod_rewrite, я сделал его доступным через:

/ q / TERM

Правило, которое я использовал в .htaccess, было примерно таким:

RewriteEngine on 
RewriteRule ^q/(.+)$ index.php?q=$1

Это работает хорошо,Но когда я ввожу термин в форму HTML и нажимаю кнопку отправки, меня все равно перенаправляют на ...

/ index.php? Q = TERM

Как мне сделать мойGET-форму, напрямую вызывая новый и короткий URL?Его код:

<form action="/index.php" method="get" accept-charset="utf-8">
...
</form>

1 Ответ

1 голос
/ 03 апреля 2011

A всегда будет вызывать вашу страницу с ?q=TERM, а ваше правило перезаписи только скажет: /q/TERM на самом деле ?q=TERM

Тогда вам нужно переписать ?q=TERM на /q/TERM first. Но нам нужно позаботиться о петлях.

Итак, давайте попробуем:

EDIT1: другие флаги. (Я обнаружил, что [C] запускает правила, поэтому мы не хотим этого)

RewriteCond %{QUERY_STRING} ^q=(.*)$ [NC]
RewriteRule ^$ /q/%1 [NC,L]

RewriteRule ^q/(.+)$ index.php?q=$1 [NC,L]

Скажите мне, как это ведет себя.

Связанный: SO entry

...