0

同じページを指すための 2 つの書き換えルールを記述する代わりに、Or ステートメント ( | ) を使用して 1 つのルールでこれを行うことができます。

RewriteRule ^([\d]+)-post[\d]*\.html|#post([\d]+) /post.php?p=$1.html    [R=301,NC,L]

とにかく1つしか表示されないため、最後に追加の$ 2を試してみました:

RewriteRule ^([\d]+)-post[\d]*\.html|#post([\d]+) /post.php?p=$1$2.html    [R=301,NC,L]

上記のルールを使用すると、これはうまく機能します。

site.com/14729-post9.html

ただし、これは機能しません(ここでテストされ、機能するはずですが: http://regexpal.com/ ):

site.com/post.php?p=14729#post14729

実際にそれを機能させる方法はありますか、それとも 2 つの個別のルールを作成する必要がありますか?

ところで、どちらかの方法でサーバーの負荷が高くなりますか?

4

2 に答える 2

0

ここで重大な問題。

URLの#post14729一部は aa URL Fragmentと呼ばれ、サーバーに送信されることはありません。したがって、単純に存在しないため、照合できません。したがって、正規表現の 2 番目の部分:#post([\d]+)は決して一致しません。

于 2013-05-18T21:57:42.670 に答える