2010-12-02 7 views
1

ApacheのRedirectMatchディレクティブを使用して、すべてのユーザをHTTPS URL にリダイレクトしようとしている状況があります(を除く)。私はディレクティブでそれを使用しようとすると、Apache内のユーザスペース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が指示なしにリダイレクトしているようです。

+0

は慎重に(代わりにmod_aliasのmod_rewriteのを使用します)ランディーなど私はあなたが見ている動作を説明することはできません。 –

答えて

0

これには何かがありますか?それはまた `でトリガされますので、` ^((?!アンディ)。)* $は `*どこでも*` andy`含まれていません任意の文字列に一致します。

RewriteCond %{REQUEST_URI} !^/~andy(/|$) ... 
RewriteCond %{SCRIPT_URI} ^http: 
RewriteRule ^/(.*) https://mysite.com/$1 [R=307]
+0

ご返信ありがとうございます。これは、RedirectMatchとまったく同じように動作するように見えました。私はユーザーのウェブスペースを別の方法で扱わなければならないと思います。 http://www.example.com/~qwerty(実際のWebスペースではない)を使用すると、正規表現が機能し、リダイレクトされません。 – LostInTheWoods

関連する問題