2011-12-09 84 views
0

我在使用通配符子域時遇到了鏈接到頁面的問題,並且希望找出一個解決方案。通配符子域問題與其他頁面的鏈接

我希望用戶有自己的子域來查看自己的網站內容,因此如果用戶鍵入「user1.domain.com」,服務器將有一個重寫規則,將請求引導到index.php頁面根目錄。這個index.php頁面將被用於所有的子域名,並且將基於在查詢字符串中傳遞的子域名從數據庫提供內容。

這部分工作很好,它提供了index.php中的內容。當index.php頁面加載時,它包含一個菜單(HOME | RENTALS | CONTACT US)。當我點擊菜單鏈接轉到另一個頁面時,問題就出現了。 URL地址更改,但頁面內容不更改。

這裏有一個例子:如果我點擊「出租」我希望用戶去rentals.php頁面,並顯示可用於「用戶1」的子域的租金......但在這裏發生了什麼:

鏈接場景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的問題是我想要的網址改爲:「user1.domain.com/rentals.php」

我不知道這是否可以成爲一個重寫條件設置,但我無法弄清楚。

如果有人能幫助,我將不勝感激!

這裏是我的目錄結構:

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

這裏是Apache重寫規則(第1章工作二號規則我說希望能解決我的問題,但它並沒有解決問題):

<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]