0

元の動的サイトの静的コピーがあります。元のサイトには次のようなURLがありました。

http://www.example.com/index.php?module=prodreviews&func=showcontent&id=728

ただし、サイトの静的コピーがあるため、すべてのURLに?ではなく@が付いています。および.htm拡張子。

したがって、現在のURL形式: http: //www.example.com/index.php@module=prodreviews&func=showcontent&id=728.htm

古いURL構造(URLの「?」で.htm拡張子なし)のリクエストを新しいURL形式にリダイレクトするmod_rewriteルールは何ですか?基本的に、URL形式が変更されていても、古いリンクを介して自分のサイトにアクセスした人は誰でも正しいページに移動できるようにしたいと思います。

私はいくつかのルールを書くことで遊んでいますが、サイコロはありません。

これが私がこれまでに持っているものですが、これは任意のURLに.htm拡張子を自動的に追加するだけです。「?」が含まれるURLリクエストを置き換える必要があります。「php」の後に「@」を付ける:

Options +FollowSymlinks Options +Indexes RewriteEngine On RewriteBase /
# add .html file extension 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.htm -f 
RewriteRule ^(.+)$ $1.htm [L]
4

1 に答える 1

0

書き換えルールのターゲットの一部としてクエリ文字列を含める必要があります。

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}@%{QUERY_STRING}\.htm -f
RewriteCond %{QUERY_STRING} ^(.*)$  
RewriteRule ^(.*)$ /$1@%1.htm? [L]
于 2012-07-13T07:47:00.610 に答える