重定向第三级域

时间:2015-05-20 03:48:45

标签: .htaccess redirect

这似乎很容易,但我似乎无法在网上找到确切的解决方案并让它发挥作用。我想重定向所有链接,例如

user1.example.com
user2.example.com
user3.example.com etc.

example.com/search.html?user=user1
example.com/search.html?user=user2
example.com/search.html?user=user3 etc.

在我的.htaccess中我有

RewriteCond %{HTTP_HOST} !^(www\.)?example.com$ [NC]
RewriteCond %{HTTP_HOST} ^([\.]+)\.example.com$ [NC]
RewriteRule .* /search.html?user=% [L]

我想重定向所有用户"子域名" (它们并不真正存在于服务器上),除非域名前缀为www。 "用户"字段由字母,数字, - (破折号),_(下划线)和可能的空格组成。我正在使用上面的.htaccess获取 Server Not Found 错误,例如,user1.example.com我做错了什么?这可以在没有这些三级域名的真实存在的情况下完成吗?提前谢谢。

2 个答案:

答案 0 :(得分:0)

试试这个:

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ [NC]
RewriteRule .* /search.html?user=%1 [R,L]

答案 1 :(得分:0)

您可以在捕获域的第一部分时使用负面预测,并在以后使用后引用%1

RewriteCond %{HTTP_HOST} ^((?!www\.)[^.]+)\.example\.com$ [NC]
RewriteRule !^search\.html$ /search.html?user=%1 [L,QSA,NC]