1

Apache の RedirectMatch ディレクティブを使用して、独自の Web スペースにアクセスする単一 (Linux) ユーザーを除くすべてのユーザーを HTTPS URL にリダイレクトしようとしている状況があります。ユーザー名を否定する正規表現コードを見つけました。

 ^((?!andy).)*$

しかし、ディレクティブで使用しようとすると:

RedirectMatch ^((?!andy).)*$ https://www.example.com/

URL:

http://www.example.com/~andy/

それでも HTTPS URL にリダイレクトされます。

https://www.example.com/

リダイレクトを無視したいとき。私は正規表現 (または Apache) の専門家ではないので、これを機能させるための助けをいただければ幸いです。

ありがとう、スティーブン

編集:OK、プロットが厚くなります...行をコメントアウトすると:

# RedirectMatch ^((?!andy).)*$ https://www.example.com/

Apache を再起動してから、次の URL を試してください。

http://www.example.com/andy

期待どおりの 404 応答が返されます。しかし、URLを試してみると:

http://www.example.com/~andy

リダイレクトがトリガーされ、次の場所にリダイレクトされます。

https://www.example.com/

私が言ったように、リダイレクトはコメントアウトされており、サーバーを再起動しました。これはどのように起こりますか?したがって、これは単なる正規表現ではなく、Apache が指示なしでリダイレクトしているようです!

4

1 に答える 1

0

多分これの線に沿って何か?(mod_aliasの代わりにmod_rewriteを使用します)

RewriteCond%{REQUEST_URI}!^ /〜andy(/ | $)..。
RewriteCond%{SCRIPT_URI} ^ http:
RewriteRule ^ /(。*)https://mysite.com/$1 [R = 307]
于 2010-12-02T11:01:24.807 に答える