mod_rewriteのルールをリダイレクトすべての要求を除き、特定のパス

StackOverflow https://stackoverflow.com/questions/19493

  •  09-06-2019
  •  | 
  •  

質問

ようにしているためリダイレクトすべての要求は私のドメイン別ドメインを使用mod_rewriteにApache2.2VirtualHostなります。ある例外です--いすべての要求を /audio パス ない ク.

長々と書きましたが、RewriteCondやRewriteRuleいかなやまだひさしをはじめとする姿はいかがでしょうか。正規表現が含まれて否定先読みの文字列"/オーディオ"が何らかの理由なマッチングです。ここでの定義:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*\.)?mydomain\.net(?!/audio) [NC]
RewriteRule ^(.*)$ http://www.newdomain.net [L,R=301]

を変更した場合、購入したのRewriteCond:

RewriteCond %{HTTP_HOST} ^(.*\.)?mydomain\.net/(?!audio) [NC]

(け前にスラッシュ以外の否定先読み)その作品が下振れる要求mydomain.net 無末尾にスラッシュはリダイレクト.

誰でもできるので行かになっているが悪いのでしょうか。

(注:角度ブラケットのドメインのRewriteRuleビット以上が追加されるStackOverflow.com という形をとっていないが、実際のコード!)


このルール:

<VirtualHost *:80>
ServerAdmin me@mydomain.net
DocumentRoot "/var/www/mydomain.net/htdocs"
ServerName www.mydomain.net
ServerAlias mydomain.net

RewriteEngine on
RewriteCond {REQUEST_URI} !^/audio
RewriteRule ^(.*)$ http://www.newdomain.net [L,R=301]
RewriteLog logs/mod_rewrite_log
RewriteLogLevel 3

ErrorLog logs/error_log
CustomLog logs/access_log common
</VirtualHost>

ん@mercutio--その意味もあるようには見えません。

このmod_rewriteログという作る場合には、請求 http://mydomain.net/audio/something.mp3:

(2) init rewrite engine with requested uri /audio/something.mp3
(3) applying pattern '^(.*)$' to uri '/audio'
(2) rewrite '/audio' -> 'http://www.newdomain.net/'
(2) explicitly forcing redirect with http://www.newdomain.net
(1) escaping http://www.newdomain.net for redirect
(1) redirect to http://www.newdomain.net [REDIRECT/301]

以降、REQUEST_URIは始 /audio 私は期待のRewriteRuleに無視されます。

役に立ちましたか?

解決

のHTTP_HOSTのみのホスト名、パスのURLを求められます。

RewriteCond %{REQUEST_URI} !^/audio

きます。

さらに、デバッグ情報の書き換えエンジンの下、本当に役立つのかご状況なルールと合わせ:

RewriteLog /path/to/log/file
RewriteLogLevel 3
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top