1
Redirect 301 /resort.php/FOO/BAR http://www.sitename.com.com/index.php
RewriteRule ^/direct/(.*) /direct/$1 [QSA,L] # access non i18n files directly
RewriteRule ^/([a-z]{2}\/.*)        /$1 [QSA,L] #any language subdirectory should be left alone
RewriteRule ^/(.*\/$)               /en/$1index.php [QSA,L] #fix for links ending in /
RewriteRule ^/(.*\.php)             /en/$1 [QSA,L]  #any php file with no language subdirectory redirects to the default language

最初のリダイレクト 301 がホームページに行かない理由は何ですか? と交換すると..

RewriteRule ^/resort.php(.*) http://www.sitename.com/index.php [R=301,L]

それは働き始めます。私にはたくさんのルールがあり、あるルールから別のルールに飛び移るからだと思います。

私のディレクトリ構造は次のようなものです:

/en/index.php
/direct/

ルートに /index.php がありません。最初は en にリダイレクトしています。

4

2 に答える 2

3

ディレクティブは、Redirectmod_rewrite とのバンファイトに入っています。Redirect後者は非常に積極的であり、おそらくディレクティブによって応答に設定されたリダイレクト HTTP ヘッダーを上書きしています。

あなたはすでに解決策を見つけています - を使用しRewriteRuleてリダイレクトを実行してください。[L] フラグは「最後のルール - これ以上処理しない」を意味し、ルールが互いに干渉するのを防ぐ方法です。プレーンRedirectディレクティブは、 のより単純な機能を実現するための簡単な方法ですRewriteRule

于 2009-09-01T18:21:08.647 に答える
0
RewriteRule /resort.php/FOO/BAR http://www.sitename.com.com/index.php [R=P, L]

実際、L フラグは最後のルールを意味するため、ルールがトリガーされると、ファイルの読み取りが停止します。

于 2009-09-01T18:11:13.160 に答える