0

サブドメインを htaccess のサブディレクトリに書き換えようとしています。ここで検索して、以下のルールを実行しました。

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www)\. [NC]
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com\.br
RewriteCond %{REQUEST_URI} !^/sd_
RewriteRule ^(.*)$ http://domain.com.br/sd_%1/$1 [P,L,NC,QSA]

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.(.*)\.domain\.com\.br
RewriteCond %{REQUEST_URI} !^/sd_
RewriteRule ^(.*)$ http://domain.com.br/sd_%1/$1 [P,L,NC,QSA]

#Rewrite for my Framework
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1

アドレス: http://user.domain.com.brまたはアドレス: http://www.user.domain.com.brにアクセスすると、URL アドレスを変更せずにリダイレクトされます: http://www .domain.com.br/sd_user/

そうですね。私の問題は次のとおりです。
誰かがフォルダーを持っていないアドリーにアクセスすると、.htaccessはそれを特定のフォルダーにリダイレクトします。例:
「sd_joecompany」というフォルダーがないので、「sd_system」という名前のデフォルト フォルダーにリダイレクトしたいとします。http://joecompany.domain.com.br/にアクセスし、それぞれのフォルダーが存在しない場合、このアドレスは、アドレスを保持する「sd_system」を指している可能性があります。

このコードでは、それぞれのフォルダーなしでサブドメインにアクセスすると、次のエラーが表示されます。

プロキシ エラー

プロキシ サーバーがアップストリーム サーバーから無効な応答を受け取りました。プロキシ サーバーがリクエスト GET /index.php を処理できませんでした。

理由: Max-Forwards がゼロに達しました - プロキシ ループですか?

私の疑いの明確さについて確信が持てません。私の英語が下手で申し訳ありません。.htaccess とこれらのルールについて少し知っています。上記のコードのすべてが、ここに集まりました!

これからよろしくお願いします!

4

1 に答える 1

2

それらが同じサーバー上にあり、同じドキュメント ルートを持っている場合は、本当にプロキシしたくありません。ルールのホスト部分を削除し、「P」を取り除きます。

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/sd_
RewriteCond %{HTTP_HOST} !^(www)\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com\.br$ [NC]
RewriteCond %{DOCUMENT_ROOT}/sd_%1%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/sd_%1%{REQUEST_URI} -d
RewriteRule ^(.*)$ /sd_%1/$1 [L,NC,QSA]

RewriteCond %{REQUEST_URI} !^/sd_
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.domain\.com\.br$ [NC]
RewriteCond %{DOCUMENT_ROOT}/sd_%1%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/sd_%1%{REQUEST_URI} -d
RewriteRule ^(.*)$ /sd_%1/$1 [L,NC,QSA]

#Rewrite for my Framework
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1

正規表現の一部をクリーンアップし、余分なRewriteEngine On's を取り除きました。

于 2013-09-06T18:52:04.147 に答える