2

複数のサイトを実行するために使用しているホスティングアカウントmasterhost.comが1つあります。masterhost.comの下にsite1.com、site2.comなどがあり、masterhostディレクトリでこのコードを使用して、ドメイン要求をmasterhostディレクトリからsite1ディレクトリに再ルーティングしています。

RewriteCond %{HTTP_HOST} ^(www.)?site1.com$
RewriteCond %{REQUEST_URI} !^/site1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site1/$1/
RewriteCond %{HTTP_HOST} ^(www.)?site1.com$
RewriteRule ^(/)?$ site1/index.php

ただし、site1.comのJoomlaはこれに関していくつかの問題を抱えており、デフォルトの画像パスをmasterhost.com/imagesにルーティングしています。

リクエストhttp://www.site1.com/imagesを認識してhttp://www.masterhost.com/site1/imagesに書き込むために使用できる書き換えはありますか?

4

1 に答える 1

0

問題は次の2行だと思います:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

基本的に、画像が mainsite.com に存在する場合、これらのルールにより、リクエストが site1 にリダイレクトされなくなります。たとえば、mainsite.com/img/logo.png と site1.com/img/logo.png がある場合、site1.com には mainsite.com のロゴが表示されます。

また、このルールでは:

RewriteRule ^(.*)$ /site1/$1/

末尾のスラッシュがあるべきではないと思います。

最後に、あなたはそれについて尋ねませんでしたが、最後のルールもおそらく機能しませんか? その場合、上記の !-f および !-d チェックを削除すると、問題が発生します。これは、ユーザーが site1.com/ をリクエストした場合、最初のルールによってそれが /site1/ にリダイレクトされ、これがルールと一致しないため^(/)?$です。したがって、そのルールを次のように変更する必要があります。

RewriteRule ^site1(/)?$ site1/index.php

RewriteBase ディレクティブに応じて、そのルールで ^ と site1 の間にスラッシュが必要な場合と不要な場合があります。

于 2012-12-12T13:27:36.463 に答える