Чистый и "грязный" URL - PullRequest
       3

Чистый и "грязный" URL

2 голосов
/ 11 февраля 2011

Я сделал htaccess для чистых URL-адресов, который обрабатывается PHP после этого, однако для своей опции поиска я хочу использовать '? Q = searchquery', похожий на youtube.

RewriteEngine on
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule ^(.*)/$ index.php?d=$1 [L]

Это мой htaccess, и он работаетдля всех URL, но 'http://www.website.com/search/?q=searchquery' нет.Теперь я попробовал другие варианты, такие как эти

RewriteRule ^(.*)/\?(.*)/$ index.php?d=$1&$2

RewriteRule ^(.*)/\?q=(.*)/$ index.php?d=$1&q=$2

Они не работают.

Я также просмотрел весь URI, используя флаг [R], и все из знака вопроса не отображается.Не показывать.

RewriteRule ^(.*)/$ index.php?d=$1 [L]

Использование URL: http://www.website.com/search/?q=searchquery отображает: http://www.website.com/search/

Редактировать: Так как мне сделать оба?\ О /

1 Ответ

5 голосов
/ 11 февраля 2011

Просто используйте флаг QSA (Query String Append):

RewriteRule ^(.*)/$ index.php?d=$1 [L,QSA]

Если URL вызывается со строкой запроса, строка запроса добавляется к сгенерированному URL.

PS: Вы не можете сопоставить строку запроса в правиле перезаписи.Строка запроса удаляется до того, как будут сопоставлены правила.

...