第一部分重定向example.com/site/var
至site.example.com/var
。 二重写规则,重写您的网址site.example.com,
RewriteEngine on
RewriteBase/
RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^(www\.)?example.com/site/(.*)
RewriteRule (.*) http://site.example.com/%1 [R=301,L]
RewriteRule ^([^/\.]+)$ /site/?var=$1 [L]
说明:
RewriteEngine叙述上
此行启用重写引擎。否则可能无法工作。
RewriteBase/
这行设置了重写基地。这个指令在想要为每个目录重写设置基本URL时使用。默认值是当前的物理路径,但在大多数情况下,基于URL的路径与物理文件名路径没有直接关系,所以使用默认值是错误的。例如当使用虚拟目录时,你应该正确地设置这个选项,以使mod_rewrite运行良好。 ?
的RewriteCond%{HTTP_HOST}%{REQUEST_URI} ^(WWW)example.com/site/(.*)在此行中第一阿帕奇
加入到变量(主机地址:www.example.com
和请求URI :/site/var
)。然后用我给出的模式检查结果。首先结果可以是www.
。之后应该是example.com/site/
并在最后它可以是任何东西。
RewriteRule (.*) http://site.example.com/%1 [R=301,L]
这一行重定向用户请求http://site.example.com/%1
与301的状态代码。因为它有L
标志这是apache检查的最后一条重写规则。 %1
是重写条件中标记为(.*)
的所有内容。
RewriteRule ^([^/\.]+)$ /site/?var=$1 [L]
这条线是你把你的问题行:它重写不具有/
与/site/?var=$1
点的每个URL。
你把.htacess文件放在哪里?在网站目录? – undone
是的,我已经把它放到mydomain.com/html/site那是网站目录 – Simone
我很困惑!你确定你的重写规则适用于example.com/site?因为它在我看来应该适用于site.example.com! – undone