我正在尝试将对子域的请求重写到特定文件。因此,当我访问http://test.domain.com它显示了 campaign.php
RewriteCond %{REQUEST_URI} !^index\.php
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com
RewriteRule . /campaign.php?user=%1 [L]
然而这给了我一个服务器 500 错误
如果我将最后一行改为以下内容
RewriteRule . http://www.domain.com/campaign.php?user=%1 [L]
这似乎有效,但它也会将浏览器中的 url 更改为http://www.domain.com/campaign.php?user=test
。我想保留http://test.domain.com作为浏览器 URL 并显示 campaign.php 文件。实现此目的的最佳方法是什么?
更新:
我与我的托管商的支持台进行了交谈,他们帮助修复了这个问题,脚本变成了这样:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !/(campaign|index)\.php
RewriteCond %{HTTP_HOST} ^(.*).domain\.com$ [NC]
RewriteRule (.*) campaign.php?user=%1 [L,QSA]
答案1
RewriteCond %{REQUEST_URI} !/(campaign|index)\.php
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$ [NC]
RewriteRule . /campaign.php?user=%1 [L]