2010-04-06 4 views
2

im пытается перенаправить "search.php?q=somethinghere" на "search/somethinghere/", но я не могу этого сделать! Я пытаюсь отправить форму «<form action="search/" method="get" name="search">» вот так, но url идет на "search/?q=somethinghere"Как использовать htaccess redirectmatch с query_string?

RedirectMatch 301 ^/search.php?q=(.*)$ http://domain.com/search/$1/ это тоже не работает. в чем проблема?

Я не хочу «? Q =» в URL.

ответ

4

Если у вас есть опечатка над проблемой является то, что вы пытаетесь переориентировать:

^/search.php?q=(.*)$ 

но URL вы получаете это:

search/?q=somethinghere 

(разница есть. PHP в правиле переадресации)

Вы можете попробовать использовать следующее правило перенаправления вместо:

RedirectMatch 301 ^/search?q=(.*)$ http://domain.com/search/$1/ 
+0

но я хочу вырезать «? Q =» вещи .. понять? –

+0

Попробуйте следующее: RedirectMatch 301 ^/search /? Q = (. *) $ Http://domain.com/search/$1/ Проблема в том, что вы ищете нечто иное, чем то, что вы получение. В вашем запросе нет «.php», поэтому ваше правило будет пропустить его. –

+0

его не сработало. ничего не происходит –

0

Было бы намного проще и быстрее сделать это на стороне клиента. Создайте Javascript URL-адрес search/query в форме submit - это позволит вам сэкономить дополнительный запрос.

Однако, чтобы сделать это через серверные редиректы, вы можете использовать mod_rewrite с RewriteCond и QUERY_STRING в качестве источника:

RewriteCond %{QUERY_STRING} \bq=([^&]*)$ 
RewriteRule ^search.php$ /search/%1 [R=301] 
+0

это работает, но URL-адрес в адресной строке все еще search.php? Q = sss –

+0

Убедитесь, что вы используете [R = 301] для правильного перенаправления, включая изменение URL-адреса. Я отредактировал это через минуту после публикации, чтобы вы могли скопировать более старую версию. –

+0

с вашим обновленным кодом url становится: http://domain.com/search/nero?q=nero "? Q =" еще здесь: (( –

0

Всякий раз, когда у меня есть .htaccess вопросы, я всегда смотреть на этот сайт первым : http://corz.org/serv/tricks/htaccess2.php#cooldenial

Сайт содержит множество примеров и объяснений для разных вещей с файлами .htaccess. В соответствии с этим вы можете попробовать что-то вроде:

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^search/([^/]+) http://domain.com/search.php?q=$1 [NC] 

Однако, я не гуру .htaccess - так что вам, возможно, придется возиться с ним.

Смежные вопросы