2012-08-15 130 views
3

目前,我有一個頁面居住在:htaccess的重寫規則的子域

http://www.example.com/site/page 

在我的htaccess我當前的規則:

RewriteRule ^site/(.*)$ retailer.php?linklabel=$1 [QSA] 

什麼會規則模樣有該網頁的URL成爲它自己的子域:

http://page.example.com 

感謝您的任何幫助!

到目前爲止,我曾嘗試以下規則,沒有奏效:

RewriteRule http://(.*)$.example.com retailer.php?linklabel=$1 [QSA] 

也許我需要做的事情的cPanel關於第一個通配符子域名?我也不太清楚......

+0

那你試試? – Oussama 2012-08-15 20:15:09

+0

@Yazmat:我編輯了我原來的帖子。謝謝你的幫助!! – PaperChase 2012-08-15 20:18:59

+0

非常明確的問題。正是我在找什麼。 +1 – 2017-03-10 15:05:22

回答

1

嘗試:

RewriteCond %{HTTP_HOST} !^www.[NC] 
RewriteCond %{HTTP_HOST} ^(.+?)\.example.com$ [NC] 
RewriteRule ^$ retailer.php?linklabel=%1 [L,QSA] 

不能對陣主機在RewriteRule,所以你需要做的是對%{HTTP_HOST} VAR在RewriteCond,然後使用%1反向引用來獲得該匹配。

這將僅適用於與URI完全匹配的/。所以它不會匹配http://page.example.com/something,除非您將正則表達式從^$更改爲^something$

+0

對不起,我忘了提,實際的URL現在的樣子: http://www.example.com/site/page.com 那麼接下來的子域正試圖爲: HTTP: //page.com.example.com 請問額外的「。」在子域中搞砸了嗎? 您發佈的解決方案目前無法正常工作。謝謝! – PaperChase 2012-08-15 20:31:42

+0

@PaperChase是的,額外的點不會被匹配,只需將'([^。+] \。example.com $'改爲'(。+?)\。example.com $' – 2012-08-15 20:35:00

+0

它仍然不工作...嗯... – PaperChase 2012-08-15 20:41:15

1

試試這個:

RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com$ [NC] 
RewriteRule .* retailer.php?linklabel=%1 [L,QSA]