1

SO に関する投稿を 2 日間読んでいて、12 のサンプルを試しましたが、書き直しが機能しません。

これが私の状況
です。UbuntuでApacheを実行しています。
ルート (file1.php、file2.php) とフォルダー (web サイト)
に 2 つのファイルがあり、www.mydomain.com と domain.com をフォルダーにリダイレクトします。その部分は、この一連のルールで機能しています。

RewriteCond %{HTTP_HOST} ^(www.)?mydomain\.com$
RewriteCond %{REQUEST_URI} !^/website/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /website/$1
RewriteCond %{HTTP_HOST} ^(www.)?mydomain\.com$
RewriteRule ^(/)?$ website/ [L]

現在、サブドメインを使用しようとしています。
demo.mydomain.com は www.mydomain.com/file1.php?v=demo に移動する必要があります demo.mydomain.com/file2.php は www.mydomain.com/file2.php?v=demo に移動する必要があります。ブラウザのアドレス バーは変更されません。

私はすでにこれを持っています:

RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.mydomain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$   http://www.mydomain.com%{REQUEST_URI}?v=%1 [L]
##
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.mydomain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ file1.php?v=%1 [L]

これにより、demo.mydomain.com/file2.php が www.mydomain.com/file2.php?v=demo に移動します。これで問題ありませんが、アドレス バーの URL も変更されます。それはよくありません。
demo.mydomain.com は www.mydomain.com にリダイレクトされ、それが Web サイト フォルダに移動しますが、これは完全に間違っています。

ご覧のとおり、もうすぐそこです。小さなピースが欠けているだけです。
私を助けてください。

4

1 に答える 1

0

現在のドメインとして書き換えルールで別のドメインを使用しています (demo.mydomain.com 対 www.mydomain.com)。Apache は、これらが同じサーバーと document_root を指していることを認識しないため、Apache はリダイレクトを行います。ドメイン名の部分を削除するだけです。

RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.mydomain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$   $1?v=%1 [L,QSA]
##
...
于 2012-04-13T20:31:08.957 に答える