mod重写 - 允许完全停止

时间:2011-10-24 10:04:51

标签: .htaccess mod-rewrite

我需要一个允许完全停止的重写规则。我怎么能允许这个?我想要的是 商店/域名/ www.test.com成为商店/域名/ controller.php?param1 = www.test.com

我的原始规则如下:

RewriteRule ^ shop / domain /([^/.]+)/?$ shop / stock / controller.php?param1 = $ 1 [NC]

这只有在我删除句号时才有效。

我也尝试了以下内容:

RewriteRule ^ shop / domain /([^ /] +)/?$ shop / domain / controller.php?param1 = $ 1 [NC]

这允许完全停止,但是当它应该是www.test.com时,控制器.php是参数。

1 个答案:

答案 0 :(得分:0)

如果所有域名都以“www。”开头,则可以执行此操作

RewriteRule ^shop/domain/www\.([^/]+)/?$ shop/domain/controller.php?param1=$1 [NC,L]

您的规则存在的问题是,它也与controller.php匹配,就好像它是一个域一样。您可以添加以下两个重写条件以防止这种情况:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^shop/domain/([^/]+)/?$ shop/domain/controller.php?param1=$1 [NC,L]

!-d表示不是现有目录,!-f表示不是现有文件(例如controller.php)。