Есть ли способ переписать ?search = в / news / in .htaccess?

#php #.htaccess #url-rewriting

#php #.htaccess #url-переписывание

Вопрос:

Вероятно, нет .. но..

Есть ли способ переписать ?search= и заставить его читать /news/ в .htaccess ?

Так mydomain.com/?search=frogs было бы: mydomain.com/news/frogs

Ответ №1:

Да, вам нужно установить правило перезаписи в .htaccess, которое выполняет перенаправление HTTP, чтобы браузер запрашивал новый URL. Я бы рекомендовал код ответа 301 (постоянное перенаправление), если только это не временное, и в этом случае используйте 302.

 RewriteEngine on
RewriteCond %{QUERY_STRING} ^search=(.*)$
RewriteRule ^$ /news/%1? [L,R=301]
  

Должно сработать, хотя я не тестировал. Вот хорошее краткое изложение некоторых проблем, связанных с перенаправлением URL-адреса со строкой запроса на URL-адрес без нее.

РЕДАКТИРОВАТЬ: после тестирования изменил первый аргумент RewriteRule с ^/$ на ^$ . Теперь должно работать для URL-адресов типа example.com/?search=foo .

Ответ №2:

simples…

 RewriteRule ^/news/(.*)$ index.php?search=$1 [NC,L]