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は以前のブラウザのように戻ります。

私はリダイレクトが2回適用されていると推測します。これは古いURLが表示されている間にエラーメッセージが表示されない理由を説明しますが、どこに[R = 301、L ]そしてそれを効かせるためにはないところで。

ありがとうございました。

+0

リダイレクトとリライトを混在させようとしています。 URLを書き換えただけでは、 '301'は必要ありません。 「長い」URLは表示されません。 '301'はあなたが別の場所にページを移動すると便利ですが、私はあなたがここで何をしようとしているとは思わないのです。 – sonique

+0

ありがとうございますsonique。実際にはURLの書き換えが必要ですが、Googleの検索でWebサイトの以前のURLを指さないようにリダイレクトする必要があります。 301のリダイレクトがこれを行う方法だと私はほとんどどこでも読んでいます。だから、このファイルを私が必要とするものにするために私は何をすべきですか?ありがとう。 –

+0

これまでのURLは何ですか? 'index.php?.... 'のあるもの – sonique

答えて

0

だからあなたはRewriteRulesに加えて、以下のよう301をリダイレクトする必要があります。

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での一致の一部ではないため、2番目の例は動作しません。 [L]、mod-aliasのドキュメントを再読してください:https://httpd.apache.org/docs/current/mod/mod_alias.html#redirectmatch – starkeen