我在使用通配符子域時遇到了鏈接到頁面的問題,並且希望找出一個解決方案。通配符子域問題與其他頁面的鏈接
我希望用戶有自己的子域來查看自己的網站內容,因此如果用戶鍵入「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>