3

私はしばらくの間、自分のウェブサイトの URL 構造を修正しようとしています。

私が必要とするのは、次のすべての URL です。

/main.php?mod=PageNameHere 

書き換えられ、次の場所に301リダイレクトされます。

/PageNameHere.html

私はすでにこの RewriteRule で試しました:

RewriteRule ^([^-]*)\.html$ /main.php?mod=$1 [L]

しかし、両方の URL でページを利用できるようにしただけです。私のナビゲーションはまだ main.php?mod=PageNameHere URL にリンクしているので、301 リダイレクトを強制する方法が必要です。

4

2 に答える 2

0

2つの個別の書き換えルールが必要です。

  1. /PageNameHere.htmlへの内部転送について/main.php?mod=PageNameHereは、すでに持っているものと非常によく似ています。
  2. /main.php?mod=PageNameHere301を使用した外部再接続の/PageNameHere.html場合、現在はありません。

これがあなたのために働くはずのコードです:

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

# 1. for internal forwarding
RewriteRule ^([^.]*)\.html$ /main.php?mod=$1 [L,NC,QSA]

# 2. for external redirection
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+main\.php\?mod=([^\s&]+) [NC]
RewriteRule ^ /%1? [L,R=301]
于 2013-03-22T20:25:28.483 に答える
0

にApacheを伝えRewrite 301ます。それ以外の場合は、URLをマッピングするだけです

RewriteRule ^([^-]*)\.html$ /main.php?mod=$1 [R=301,L]
于 2013-03-22T20:02:30.647 に答える