2012-08-15 88 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]