0

次のような複数の古い URL があります。

blog/index.php?d=26&m=12&y=11   
blog/index.php?m=03&y=12&d=22&entry=entry120322-135153
blog/index.php?m=06&y=12&d=&entry=entry120602-191105    
blog/index.php?d=19&m=02&y=12

index.php の後のロジックは常に ?d、?m、または ?y です。

これらすべてを次の場所にリダイレクトする必要があります。

www.domain.com/blog

ここからいくつかの異なる方法を試しましたが、ロジックが混在しているようです。

補遺

TerryE の提案に従って、リンクを入力すると

http://www.coreyogaasia.com/blog/index.php?m=12&y=11&d=26&entry=entry111226-110412

私のブラウザでは、解決されます

http://www.coreyogaasia.com/blog/?m=12&y=11&d=26&entry=entry111226-110412

(index.php は削除されます)。しかし、それはするつもりはありません

http://www.coreyogaasia.com/blog

また、ワードプレスの上に置いています:

# BEGIN WordPress 
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase / 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule>
4

1 に答える 1

1

パラメータを確認するには、 QUERY_STRING条件を使用する必要があります。次に例を示します。

RewriteEngine  On
RewriteBase    /

RewriteCond %{QUERY_STRING} ^(d|m|y)=\d
RewriteRule blog/index.php  http://www.domain.com/blog?  [R=302,L]

パラメータを保持したい場合は、? をドロップします。リダイレクト文字列で。ただし、これを行い、ターゲットが同じディレクトリにリダイレクトされる場合は、方向ループを防ぐために追加の条件が必要になります。

これが機能したら、302 を 301 に交換します。詳細については、「 . htaccess 書き換えルールをデバッグするためのヒント」を参照してください。

バンプリクエスト後の補遺

.htaccessinがある場合は、DOCROOT/blogこれを RewriteBase の下、最初の WP cond/rule の上に挿入する必要があります。

RewriteCond %{QUERY_STRING} ^(d|m|y)=\d
RewriteRule index.php       http://www.domain.com/blog/?  [R=302,L]
于 2012-07-18T10:23:21.233 に答える