0

Я посмотрел на это переполнение стека, но не найти соответствующий ответ:Htaccess, URL переписывания и перенаправлять 301

У меня есть файл Htaccess с этим:

RewriteCond %{HTTP_HOST} !^www\.mywebsite\.com [NC] 
RewriteCond %{HTTP_HOST} !^$ 
RewriteRule ^/?(.*) http://www.mywebsite.com/$1 [L,R,NE] 

RewriteRule ^home$ /index.php [L] 
RewriteRule ^home$ /index.php?content=home [L] 
RewriteRule ^accueil$ /index.php?content=home&lang=fr [L] 
RewriteRule ^home$ /index.php?content=home&lang=en [L] 

RewriteRule ^acceuil-message-1$ /index.php?content=home&val=1&lang=fr [L] 
RewriteRule ^home-notice-1$ /index.php?content=home&val=1&lang=en [L] 
RewriteRule ^acceuil-message-2$ /index.php?content=home&val=2&lang=fr [L] 
RewriteRule ^home-notice-2$ /index.php?content=home&val=2&lang=en [L] 

RewriteRule ^news-a-la-une$ /index.php?content=news&mode=featured&lang=fr [L] 
RewriteRule ^featured-news$ /index.php?content=news&mode=featured&lang=en [L] 

RewriteRule ^news-recentes-([0-9]+)$ /index.php?content=news&mode=list&page=$1&lang=fr [L] 
RewriteRule ^latest-news-([0-9]+)$ /index.php?content=news&mode=list&page=$1&lang=en [L] 
... 

Он отлично работает.

Но мне нужно настроить 301 переадресацию. Итак, я просто изменил каждый [L] на [R = 301, L]

Но когда я это делаю, мои URL-адреса вернулись, как и раньше, в браузере.

Я предполагаю, что перенаправление применяется дважды, что объясняет, почему у меня нет сообщения об ошибке, пока отображаются старые URL-адреса, но я не знаю, где применять [R = 301, L ] и где не для того, чтобы заставить его работать.

Благодарим за помощь.

+0

Вы пытаетесь смешивать переадресацию и переписывать. Вам не нужно '301', если вы просто переписываете URL-адрес. «Длинные» URL не будут видны. '301' полезен, если вы переместите страницу в другое место, но я не думаю, что это вы пытаетесь сделать здесь. – sonique

+0

Спасибо, соник. На самом деле я хочу переписать URL-адрес, но мне также нужно перенаправить, так как мне нужны поиски Google, чтобы больше не указывать на предыдущий URL-адрес веб-сайта. Я читаю почти везде, что перенаправление 301 - это способ пойти на это. Итак, что мне делать, чтобы этот файл делал то, что мне нужно? Благодарю. –

+0

Итак, каков предыдущий URL? один с 'index.php? ....' – sonique

ответ

0

Таким образом, вы должны перенаправить 301 следующим образом, в дополнение к RewriteRules:

RedirectMatch 301 ^/index.php$ /home [L] 
RedirectMatch 301 ^/index.php?content=home&val=([0-9]+)&lang=fr /acceuil-message-1$ [L] 

PS: у вас есть тип в acceuil он должен сказать accueil

Ссылка: https://httpd.apache.org/docs/current/mod/mod_alias.html#redirectmatch

Ссылка: http://www.larousse.fr/dictionnaires/francais/accueil/569

+0

Большое спасибо за ваш ответ. Я попробую это, и если это сработает для меня, я вернусь и проголосую за ваш ответ. –

+0

Строка запроса не является частью соответствия в mod-alias, поэтому ваш второй пример не работает. также [L], перечитайте документацию по модулю: https://httpd.apache.org/docs/current/mod/mod_alias.html#redirectmatch – starkeen

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

  • Нет связанных вопросов^_^