2011-12-09 6 views
0

ワイルドカードサブドメインを使用しているときにページにリンクする際に問題が発生しています。ワイルドカードのサブドメインに他のページへのリンクがある

ユーザが自分のウェブサイトのコンテンツを見るために自分のサブドメインを持つようにしたいので、ユーザが "user1.domain.com"を入力すると、サーバはその要求をindex.phpページに送る書き換えルールを持ちますルートディレクトリ。このindex.phpページはすべてのサブドメインで使用され、クエリ文字列で渡されたサブドメインに基づいてdbからコンテンツを提供します。

この部分はうまくいきますし、index.phpのコンテンツを必要に応じて提供しています。 index.phpページが読み込まれるとメニューが表示されます(HOME | RENTALS | CONTACT US)。問題は、メニューリンクをクリックして別のページに移動したときに発生します。 URLアドレスは変更されますが、ページの内容は変更されません。

ここでは例です:私は「RENTALS」をクリックすると、私は、ユーザーがrentals.phpページにアクセスし、「USER1」サブドメインで利用可能なレンタルを表示したい...しかし、ここで何が起こっているかです:

リンクシナリオ1:

<a href="http://user1.domain.com/rentals.php">RENTALS</a> --> URL address bar changes to "user1.domain.com/rentals.php" but the page doesn't change, it still stays on the index.php content 

リンクシナリオ2:

< a href="rentals.php" >RENTALS</a> --> URL address bar changes to "user1.domain.com/rentals.php" but the page doesn't change, it still stays on the index.php content 

リンクシナリオ3(私はドメインをハードコードし、リンク作品をサブドメインのワイルドカードをOMMIT場合):

<a href="http://www.domain/public_site/rentals.php">RENTALS</a> --> URL address bar changes to "http://www.domain.com/public_site/rentals.php" AND IT WORKS, the rentals.php page loads and serves up the content. 

シナリオ3の問題は、私はURLが読みたいです:「user1.domain.com/rentals.php」

これは書き換え条件で設定することができる場合、私は思ったんだけど、しかし、私はそれを理解することができません。

誰かが助けてくれればと感謝します!ここで

は私のディレクトリ構造である:ここで

ROOT 
    | 
    PUBLIC_SITE 
    | 
    index.php 
    rentals.php 
    contactus.php 

は、Apacheのリライトルール(。第一のルールが機能する私は私の問題を解決することを期待して、それが問題を解決していなかった追加第二法則)であります

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    Options +Indexes 
    RewriteEngine On 

    ####Rewrite subdomain request to public_site/index.php 
    RewriteCond %{HTTP_HOST} !www.domain.com$ [NC] 
    RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).domain.com [NC] 
    RewriteRule ^(.*)$ /public_site/index.php?subdomain=%2 [L] 

    #### Rewrite rule for rentals.php page 
    RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).domain.com/rentals.php [NC] 
    RewriteRule ^(.*)$ /public_site/rentals.php?s=%2 [L] 

</IfModule> 

答えて

0

は単に「メインドメイン」のルールの前にこのコードを置く...リライトになった後、自分でそれを考え出した:

#### Rewrite rule for rentals.php page 
    RewriteCond %{REQUEST_URI} ^/rentals.php?$ [NC] 
    RewriteRule ^(.*)$ /public_site/rentals.php [L] 
関連する問題