2

私の古いウェブサイトには、「/index.php?s=subsite」と「/?s=subsite」のような URL があります。
ここで、「.htaccess」ファイルに次の行を追加して、短くしました。

RewriteEngine On  
RewriteBase /  
RewriteRule ^(.+)\.(html)?$ index.php?s=$1&%{QUERY_STRING} [L]  

「/subsite.html」でサイトを開くと問題なく動作しますが、古い URL「/index.php?s=subsite」と「/?s=subsite」も機能します。「/subsite.html」のみを許可し、古いリクエストをそれにリダイレクトする方法はありますか?

4

2 に答える 2

0

このルールを htaccess ファイルに追加します。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?s=([^& \]+)&?([^\ ]*)
RewriteRule ^ /%1.html?%2 [L,R=301]

これはリクエストに一致し、クエリ文字列パラメータのキャプチャを試みs、ブラウザをそのパラメータにリダイレクトし、その後に「.html」とそこにあった残りのクエリ文字列を続けます。

于 2013-08-29T10:15:57.820 に答える
0

コードを次のコードに置き換えます。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(?:index\.php)?\?s=([^\s]+) [NC]
RewriteRule ^ /%1.html? [R=301,L]

RewriteRule ^([^.]+)\.html$ /index.php?s=$1 [L,NC,QSA]
于 2013-08-29T11:09:12.073 に答える