Apache 子域的htaccess重写规则
假设我有以下站点: 这和我的想法一样 我想知道我是否能得到这样的东西 http://site.example.com/var/ 使用apache2的mod_重写Apache 子域的htaccess重写规则,apache,.htaccess,mod-rewrite,subdomain,Apache,.htaccess,Mod Rewrite,Subdomain,假设我有以下站点: 这和我的想法一样 我想知道我是否能得到这样的东西 http://site.example.com/var/ 使用apache2的mod_重写 以下是我的尝试: RewriteEngine on RewriteRule ^([^/\.]+)$ /site/?var=$1 当URL是时,这就像一个魅力,但由于我只是一个初学者,我不知道如何让它工作 非常感谢您的帮助。我找到了一个解决方案: RewriteBase / 有些主机需要RewriteBase规范才能正常工作。
以下是我的尝试:
RewriteEngine on
RewriteRule ^([^/\.]+)$ /site/?var=$1
当URL是时,这就像一个魅力,但由于我只是一个初学者,我不知道如何让它工作
非常感谢您的帮助。我找到了一个解决方案:
RewriteBase /
有些主机需要RewriteBase
规范才能正常工作。
我希望这有帮助 我找到了一个解决方案:
RewriteBase /
有些主机需要RewriteBase
规范才能正常工作。
我希望这有帮助 第一部分将
example.com/site/var
重定向到site.example.com/var
。
第二条重写规则,在site.example.com中重写您的url
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]
说明:重新启动引擎
此行打开重写引擎。否则它可能无法工作。
重写基础/
这一行设置了重写基。此指令在希望为每目录重写设置基本URL时使用。默认值是当前物理路径,但在大多数情况下,URL基不直接与物理文件名路径相关,所以使用默认值是错误的。例如,在使用虚拟目录时,您应该正确设置此选项,以便mod_rewrite操作正常。
重写cond%{HTTP\u HOST}%{REQUEST\u URI}^(www.)?example.com/site/(.*)
在这一行中,首先apache连接到变量(主机地址:
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]
这一行就是您在问题中提出的那一行:它重写了没有
/
的每个URL,并使用/site/?var=$1
将第一部分重定向到example.com/site/var
到site.example.com/var
。
第二条重写规则,在site.example.com中重写您的url
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]
说明:重新启动引擎
此行打开重写引擎。否则它可能无法工作。
重写基础/
这一行设置了重写基。此指令在希望为每目录重写设置基本URL时使用。默认值是当前物理路径,但在大多数情况下,URL基不直接与物理文件名路径相关,所以使用默认值是错误的。例如,在使用虚拟目录时,您应该正确设置此选项,以便mod_rewrite操作正常。
重写cond%{HTTP\u HOST}%{REQUEST\u URI}^(www.)?example.com/site/(.*)
在这一行中,首先apache连接到变量(主机地址:
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]
这一行就是你在问题中的那一行:它重写了没有
/
的每个URL,并用/site/?var=$1
将.htacess文件放在哪里?在站点目录中?是的,我把它放在了mydomain.com/html/site中,这就是我搞糊涂的站点目录!您确定您的重写规则适用于例如.com/site吗??因为在我看来,它应该适用于site.example.com!!!它现在可以使用RewriteBase/
,但我仍然无法从example.com/site重定向到site.example.com,因为我知道您想要将(外部)example.com/site重定向到site.example.com!如果我听懂了,告诉我把代码放在这里!你把.htacess文件放在哪里了?在站点目录中?是的,我把它放在了mydomain.com/html/site中,这就是我搞糊涂的站点目录!您确定您的重写规则适用于例如.com/site吗??因为在我看来,它应该适用于site.example.com!!!它现在可以使用RewriteBase/
,但我仍然无法从example.com/site重定向到site.example.com,因为我知道您想要将(外部)example.com/site重定向到site.example.com!如果我听懂了,告诉我把代码放在这里!它起作用了!非常感谢。和你能简单地给我解释一下你的密码吗?赏金将是你的:)只是觉得如果我键入www.example.com/site,它就不起作用了。。。我该如何解决?它是有效的!非常感谢。和你能简单地给我解释一下你的密码吗?赏金将是你的:)只是觉得如果我键入www.example.com/site,它就不起作用了。。。我该如何解决?