これは非常に奇妙です。Apache mod_rewriteはRewriteRuleを無視しますか?
私は同じクライアント用に2つのサイトを持っています。特定のページが両方のサイトに存在し、2つのコピーを保持する必要がないので、サイトAのこれらのURLをサイトBの対応するサイトにリダイレクトするようApacheに指示しました。
私は次のディレクティブをmy .htaccessファイル:
RewriteRule ^/?$ https://www.site-b.example.com/ [R=301,QSA,L]
RewriteRule ^privacy/?$ https://www.site-b.example.com/privacy-policy/ [R=301,QSA,L]
RewriteRule ^terms/?$ https://www.site-b.example.com/terms-conditions/ [R=301,QSA,L]
RewriteRule ^userguide/?$ https://www.site-b.example.com/user-guide/ [R=301,QSA,L]
RewriteRule ^abcdefg/?$ https://www.site-b.example.com/user-guide/ [R=301,QSA,L]
(私はそれがそのようにする必要があり言えば十分、私はここであなたを退屈しません正当な理由のために代わりmod_aliasのリダイレクト/に、RedirectMatchのmod_rewriteの者のRewriteRuleを使用しています。)
奇妙なことは、これらのすべてが^userguide/?$
以外のものです。私はhttps://www.site-a.example.com/に行くとき
- 私はhttps://www.site-b.example.com/
- 私はhttpsに行くにリダイレクト://www.site-a.example.com/privacy https://www.site-b.example.com/privacy-policyにリダイレクトされます
- https://www.site- a.example.com/terms https://www.site-b.example.com/terms-conditionsにリダイレクトされます
- https://www.site-a.example.com/userguideにアクセスすると、リダイレクトはありません!
- 私は私が
何をhttps://www.site-b.example.com/user-guideにリダイレクトhttps://www.site-a.example.com/abcdefgに行くとき一体何が起こっているの? "userguide"はmod_rewriteの予約語ですか?
ページ 'userguide.php'またはディレクトリ' userguide'がありますか?それは他の人にとって同じですか? – Croises
ありがとう@Croises - はいそれはuserguide.htmlでした。私はmod_rewriteディレクティブの優先順位を誤解していたに違いない - configのどこかに、既存のファイルとディレクトリがさらに書き直し/リダイレクトされないというルールがありますが、私のルールは最初に処理されると思いました。ないと思います!答えとしてあなたのコメントを追加する場合は、私はそれに感謝&upvoteを与えることができます:) –