2

joomla を使用した Web サイトがあり、いくつかのリンクをリダイレクト (301) する必要があります

それらはこの形式です (index.php?Itemid= それらを識別します - この部分を持たないすべてのリンクはリダイレクトされるべきではありません)

/index.php?Itemid=544&catid=331:savona&id=82356:smembramento-dei-cantieri-baglietto-di-varazze-lopposizione-delle-maestranze&option=com_content&view=article

これはうまくいくはずです

RewriteRule ^index.php?Itemid(.*)$ http://www.ligurianotizie.it/archive/index.php?Itemid$1 [L,R=301]

しかし、最初の?(疑問符) 問題が発生するようです。

実際、リンクに疑問符が付いていないと仮定すると、

/index.phpItemid=544&catid=331:savona&id=82356:smembramento-dei-cantieri-baglietto-di-varazze-lopposizione-delle-maestranze&option=com_content&view=article

私は使うだろう

RewriteRule ^index.phpItemid(.*)$ http://www.ligurianotizie.it/archive/index.php?Itemid$1 [L,R=301]

そしてすべてが完璧です。しかし残念なことに、実際のリンクには疑問符が付いており、解決策を見つけなければなりません。

あのクエスチョンマークと何の関係が?

4

3 に答える 3

2

文字は?エスケープされていますか?NE次のように(noescape) フラグを追加してみてください。

RewriteRule ^index.php?Itemid(.*)$ http://www.ligurianotizie.it/archive/index.php?Itemid$1 [L,R=301,NE]
于 2012-05-27T10:14:52.583 に答える
0

疑問符の後ろの部分がクエリ文字列です。を使用RewriteCondして空でないかどうかを判断し、それに基づいてリダイレクトを決定できます。

注: クエリ文字列

パターンはクエリ文字列と照合されません。代わりに、%{QUERY_STRING} 変数で RewriteCond を使用する必要があります。ただし、クエリ文字列部分を含む置換文字列で URL を作成することはできます。置換文字列内で疑問符を使用するだけで、次のテキストをクエリ文字列に再挿入する必要があることを示します。既存のクエリ文字列を消去する場合は、置換文字列を疑問符だけで終了します。新しいクエリ文字列を古いクエリ文字列と組み合わせるには、[QSA] フラグを使用します。

ソース: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

于 2012-05-27T10:25:41.170 に答える
0

これはあなたを助けるはずです:

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} Itemid
RewriteRule ^index.php(.*)$ http://www.ligurianotizie.it/archive/index.php$1 [L,R=301]

「Itemid」を含むすべてのリンクはリダイレクトされますが、他のリンクはリダイレクトされません。

于 2012-05-27T12:51:25.280 に答える