Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 了解htaccess更改为何起作用_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache 了解htaccess更改为何起作用

Apache 了解htaccess更改为何起作用,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我有两个域指向我的服务器。htaccess基本上是这样的: RewriteCond %{HTTP_HOST} (www\.)?parkeddomain\.net [NC] RewriteRule ^page1\.html$ https://www.newsite.net/page1/ [L,R=301,NC] RewriteRule ^page2\.html$ https://www.newsite.net/page2/ [L,R=301,NC] 我也想重定向主页。所以我在同一个条件下使用了列

我有两个域指向我的服务器。htaccess基本上是这样的:

RewriteCond %{HTTP_HOST} (www\.)?parkeddomain\.net [NC]
RewriteRule ^page1\.html$ https://www.newsite.net/page1/ [L,R=301,NC]
RewriteRule ^page2\.html$ https://www.newsite.net/page2/ [L,R=301,NC]
我也想重定向主页。所以我在同一个条件下使用了列表中的这两条规则:

RewriteRule ^$ https://www.newsite.net [L,R=301,NC]
RewriteRule ^/$ https://www.newsite.net [L,R=301,NC]
当我在该条件下(仅指定一个域)将这两条规则添加到重写规则列表的末尾时,它也在转发我的另一个域,显然完全忽略了重写条件

但只要将这两条规则移到重写规则列表的顶部,它就可以按我的意愿工作(例如不转发我的其他域)

为什么会这样


提前谢谢。我只是想知道为什么会这样。我使用的唯一其他标志是指向带有锚链接的链接(例如)的两个重定向上的“NE”。

RewriteCond
仅适用于文件中的下一个
RewriteRule
。因此,如果在
RewriteCond
之后有4个
RewriteRule
,则只有第一个受其影响

一个或多个RewriteCond可以位于RewriteRule指令之前

您可以将
RewriteCond
与[和](隐式)或[或]组合使用。但不是重写规则

在同一链接中,它们显示了一个示例:

RewriteCond  "%{HTTP_USER_AGENT}"  "(iPhone|Blackberry|Android)"
RewriteRule  "^/$"                 "/homepage.mobile.html"  [L]

RewriteRule  "^/$"                 "/homepage.std.html"     [L]
如果是手机,请转到手机页面,否则请转到标准页面。
RewriteCond
仅适用于第一个。否则,在这种情况下,所有用户都会看到移动页面


仅供参考:如果您在单独的VirtualHost中拆分域,您可以在不影响另一个域的情况下操纵一个域的配置。它为您进行拆分,因此您甚至不再需要倒换秒。

出于某种原因,我认为所有重写规则直到空行都将遵守上述重写秒。。。并感谢虚拟的建议。谢谢你的详尽回答,伙计。干杯