Apache 子域的htaccess重写规则

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规范才能正常工作。

假设我有以下站点:

这和我的想法一样

我想知道我是否能得到这样的东西

http://site.example.com/var/

使用apache2的mod_重写


以下是我的尝试:

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,它就不起作用了。。。我该如何解决?