アクセスしようとしているパスを維持しながら、SSL対応サイトでクライアントを移動するためのこのRedirectMatchルールがあります。
Redirectmatch permanent (.*) https://www.foobar.com$1
そしてそれは完全に機能しています。ここで、リダイレクトする必要がある/ somepathの例外を追加しますnot。どうやってやるの?
Mod_rewriteを使用して、「書き換えてマッチングを停止しないでください」という書き換えを追加しますが、リダイレクトにはそのようなメカニズムはありません。また、!(/ somepath |/someotherpath)のように正規表現を簡単に逆にすると、$ 1パラメーターを取得できなくなります。
Mod_rewriteを使用したくない理由はありますか?
これで機能を模倣できます:
RewriteCond%{REQUEST_URI}!^ /(somepath | someotherpath) RewriteRule(。*)$ 1 [R = permanent] RewriteRule http://%{SERVER_NAME}(。 *)https://www.foobar.com$1 [L]
ApacheがPCREを使用していることに気づいていませんでした。そうなので、mod_aliasでやりたいことをするためにこのちょっとしたブードゥーを行うことができます:
RedirectMatchパーマネント^ /?((?!(thisisfoo | thisisbar))。*)https://www.foobar.com/$1
ここで、/ thisisfooと/ thisisbarはリダイレクトの例外です。
ドキュメント( http://httpd.Apache.org/docs/2.2/mod/mod_alias.html#order )によると、Redirect
sは検出された順序で処理されます。 。したがって、より制限的なルールを最初に配置し、最後にキャッチオールルールを設定することをお勧めします。