我最近刚刚从 Linux 主机迁移到 Windows 2003 的专用服务器,我只有一个使用 Mod_rewrite 的站点,但使用 ISAPI _Rewrite 3 免费,规则是全局的。

如何编写一个条件以仅影响“mysite.com”而不影响其他?

这是我的 httpd.conf 文件

# Helicon ISAPI_Rewrite configuration file
# Version 3.1.0.66

RewriteEngine On
RewriteBase /
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?page=$1 
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?page=$1&id=$2 [L]

我不想只为这个网站购买 ISAPI_Rewrite

谢谢

有帮助吗?

解决方案

至少关于 Apache 的 mod_rewrite, ,你可以使用 C 旗帜 像这样链接规则:

RewriteCond %{HTTP_HOST} =example.com
RewriteRule ^ - [C]
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?page=$1 [C]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?page=$1&id=$2 [L]

如果有一条规则 不是 匹配时,将跳过所有后续链式规则。这意味着,如果第一条规则不匹配(主机名不是 example.com),将跳过以下链式规则。注意不要添加 C 将最后一条规则标记为链标记。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top