.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に一致します