htaccess将第二级主机名转换为参数

时间:2017-07-10 08:55:44

标签: .htaccess

我想使用像这样的htaccess文件将二级域名转换为某个url参数:

us.mydomain.com

mydomain.com/?country=us

我想要的是首先进行转换,然后应用当前规则。这是我目前的htaccess文件:

RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

任何人都可以帮我解决htaccess规则吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

我认为在这里评估php中的$_SERVER['HTTP_HOST']变量会更容易,但也许这就是你在http服务器级别上寻找的东西:

RewriteEngine On
# Append host name as country argument
RewriteCond %{QUERY_STRING} !^country=
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$
RewriteRule ^ %{REQUEST_URI}?country=%1 [QSA]

一般提示:您应该始终更喜欢将此类规则放在http服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess样式文件)。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。它们仅作为最后一个选项提供给您无法控制主机配置的情况(阅读:非常便宜的托管服务提供商),或者您有一个依赖于编写自己的重写规则的应用程序(这是一个明显的安全噩梦) )。