2011-08-10 20 views
2

すべてのサブドメインをフォルダにマップしたいと思います。例subdomain.domain.comは(透過的)Apacheを使用するフォルダへのサブドメインmod_rewrite関連の問題

RewriteCond %{HTTP_HOST} ^(.+)\.oomail\.org 
RewriteCond %{HTTP_HOST} !^www\.oomail\.org [NC] 
RewriteRule ^(.+)$ /var/www/clients/%1/$1 

をdomain.com/clients/subdmainのコンテンツを表示する必要があるため
は、私は500内部サーバーエラーを得ました。私は[R]フラグ

RewriteRule ^(.+)$ /var/www/clients/%1/$1 [R] 

を付加し、問題は、私は

http://q1.oomail.org/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/always.html 

アドレスバーにこの結果を得いただきまし確認するにはその後、私は$ _GET変数の詳細をダンプdetails.phpファイルを作成しました。その内容は

<pre> 
<?php 
var_dump($_GET); 
?> 
</pre> 

とするように変更するRewriteRuleである(注:私はその内容示したdetails.phpに$ 1、%1を送信していますhttp://subdomain.oomail.org/file.htmlを開いた後

RewriteRule ^(.+)$ details.php?p=%1&d=$1 

とを、私は出力を得ました可変Pが正しいされた

array(2) { 
    ["p"]=> 
    string(9) "subdomain" 
    ["d"]=> 
    string(11) "details.php" 
} 

として「SUである(1%の値)私がURLに開けたfile.htmlであると予想されていたdetails.phpです。どこが間違っていますか?またはマッピングするためにfile.html(URI)を変数にフェッチする方法はありますか?

答えて

5

使用このルール:あなたはApacheが(10回の反復を超えないデフォルトでは)中断していた無限の書き換えループを持っていたあなたの最初の試みで、

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/clients/ 
RewriteCond %{HTTP_HOST} ^(.+)\.oomail\.org 
RewriteCond %{HTTP_HOST} !^www\.oomail\.org 
RewriteRule ^(.*)$ /clients/%1/$1 [L] 

を。 2回目の試みでは、限られたリライトループに直面しています(2回の反復、私は信じています)。これはmod_rewriteがどのように動作するかを示しています。ルール内でこのような可能性を数える必要があります。特に.*をマッチングパターンとして使用すると効果的です。

私のルールの最初の条件は、リライトループが起こらないようにします(ルールは非常に最初の反復でしか機能しません)。残念ながら、これはいくつかの制限事項を意味します。元のURL で始まることはできません/clients/で始まります。たとえば、次のURLはリダイレクトされません。http://something.example.com/clients/hello-kitten.php (あなたは明らかに、同様の書き換えルールでそのフォルダを変更する必要があります)たとえば_clients_folder_ため: -

ソリューションは、よりユニークなものにclientsフォルダの名前を変更。

何か読みたいもの:RewriteRule Last [L] flag not working?

関連する問題