0

/en/news/12345 をhttp://www.xyz.com/en/newsletters/12345にリダイレクトしようとしています

唯一のことは、"en" と "12345" は変わる可能性がありますが、"news" は常に同じです。

これまでのところ、次のものがあります。

RewriteRule /^(. )/news/(. )$ http://www.xyz.com/ $1/news/$2 [R=301,L]

しかし、mydomain/wp-admin にアクセスすると、エンドレス リダイレクトが発生しますか?? なぜこれが起こっているのですか?

ありがとう

4

2 に答える 2

0

.htaccessファイルで問題が見つかったと思います。最初はRewriteRule . /swissfil3/index.php [L]、パスが既存のファイルまたはフォルダーを指している場合(ファイルを無視)に(catch-all)がリダイレクトされないようにする2つの条件がありました。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCondは、条件の直後に続くルールにのみ適用されます。

これらのディレクティブのすぐ下に新しいルールを追加した場合、キャッチオールルールが/wp-adminなどの既存のファイルまたはディレクトリをリダイレクトすることを妨げられませんでした。つまり、catch-allの前にルールに一致しないすべてのリクエストは、/ swissfin / 3/index.phpにリダイレクトされます。

(.)さらに、パスの各部分をキャプチャするために使用しました。これは任意の1文字に一致しますが、それ以上は一致しないため、リダイレクトは/ XX / news /YYYY...ではなく/X/ news / Yに制限されます。これを修正するには、(.+)0個以上の文字に一致するものを使用できます。 、または([^/]*)/に等しくない0個以上の文字に一致するさらに良い。

次のコードを使用することで、これらの問題を回避できるはずです(catch-allディレクティブがignore-on-fileのすぐ下に移動され、書き換えルールが/に等しくない0個以上の文字に一致する場合)。

# ...
RewriteRule ^([^/]*)/news/([^/]*)$ http://www.xyz.com/$1/news/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /swissfin3/index.php [L]

ここでは、charを含むすべてのURLに一致します

于 2012-10-19T08:54:17.320 に答える
0

オプション +FollowSymlinks

RewriteEngine on

RewriteRule ^en/news/([0-9]) http://www.xyz.com/en/newsletters/ $1 [NC]

これを試してください、それがあなたの問題を解決することを願っています

于 2012-10-19T09:48:08.110 に答える