任何人都可以帮助apache
进行以下重写吗?
想象一下,我有域domain.com
我想要的是什么:
如果有人要求www.domain.com,请返回www.domain.com(即 我的根目录中的index.php)
如果有人请求subA.subB.domain.com然后返回 www.domain.com?sub=subA.subB
如果有人请求sub.domain.com,请返回www.domain.com?sub=sub
如果有人请求domain.com,请返回www.domain.com
我知道这里的规则就是自己动手。我有。例如,类似的问题here要求重定向到/ subA / subB - 但即使我理解了答案,我也不知道如何使其适应我所需要的,即sub = subA.subB。多年来,我试图多次理解重写。好的,/ sobstory -off。
答案 0 :(得分:0)
这将重写您的子域名:
RewriteEngine on
RewriteCond %{QUERY_STRING} !^sub=
RewriteCond %{HTTP_HOST} ^(?!www\.)(.+)\.domain\.com$
RewriteRule ^(/?)$ $1?sub=%1
根据需要替换域。确保每个.
之前都有一个斜杠。
它仅适用于索引页面。如果您希望在domain.com/
之后有某些内容让我知道,那么它就可以正常工作。
至于使http://domain.com
工作,我建议将其重定向到www.domain.com
,这样您就不会从搜索引擎中获得重复的内容问题。这样做(在上面添加它):
RewriteCond %{HTTP_HOST} =domain.com
RewriteRule ^ http://www.domain.com%{REQUEST_URI} [R=301,L]
在那个点之前不需要斜线。
如果有任何对你不利的事,请告诉我。
原创海报的后记基于评论:
上述解决方案对于该问题是正确的,但在服务器上采用以下配置: