这似乎很容易,但我似乎无法在网上找到确切的解决方案并让它发挥作用。我想重定向所有链接,例如
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
我做错了什么?这可以在没有这些三级域名的真实存在的情况下完成吗?提前谢谢。
答案 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]