另一方面,我有大约400,000个子域名。鉴于上述情况,一些调用也运行子域级,例如..
subdomain1.example.com/some_action/
仅应从域执行的此类操作有27个。
Htaccess文件我创建了一条规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?example.com
RewriteRule ^some_action1/?$ index.php?some_action1 [L]
如果我添加此行
RewriteRule ^some_action2/?$ index.php?some_action2 [L]
与some_action3等的工作方式不同。
我已分别为每个动作添加了
RewriteCond %{HTTP_HOST} ^(www.)?example.com
你能以某种方式跳过协调吗?
答案 0 :(得分:3)
每个RewriteCond
条件仅适用于紧随其后的RewriteRule
。这意味着如果你有一堆规则,你必须复制条件。如果您确实由于某种原因不想这样做,那么您可以在所有规则的最开始使用否定。这可能是也可能不是一个好的解决方案,因为它可能会影响您未来对规则的更改:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www.)?example.com
RewriteRule ^ - [L]
RewriteRule ^some_action1/?$ index.php?some_action1 [L]
RewriteRule ^some_action2/?$ index.php?some_action2 [L]
RewriteRule ^some_action3/?$ index.php?some_action3 [L]
etc...
因此,第一条规则检查主机的负面信息是example.com,并跳过所有内容。然后,您可以添加所有规则,而无需担心这种情况。
但是,如果你的“some_action”总是成为GET参数的一部分,你可以只使用一个规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?example.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?$1 [L]