.htaccess mod rewrite-允许句号
我需要一个允许句号的重写规则。我怎么能允许这样呢?我想要的是什么 shop/domain/www.test.com将成为shop/domain/controller.php?param1=www.test.com 我的原始规则如下: 重写规则^shop/domain/([^/]+)/?$shop/stock/controller.php?param1=$1[NC] 这是有效的,但只有当我删除了句号 我还尝试了以下方法: 重写规则^shop/domain/([^/]+)/?$shop/domain/controller.php?param1=$1[NC] 这允许使用句号,但随后是has controller。php是参数,它应该是www.test.com。如果所有域都以“www.”开头,您可以这样做.htaccess mod rewrite-允许句号,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我需要一个允许句号的重写规则。我怎么能允许这样呢?我想要的是什么 shop/domain/www.test.com将成为shop/domain/controller.php?param1=www.test.com 我的原始规则如下: 重写规则^shop/domain/([^/]+)/?$shop/stock/controller.php?param1=$1[NC] 这是有效的,但只有当我删除了句号 我还尝试了以下方法: 重写规则^shop/domain/([^/]+)/?$shop/domain
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
)。是的,谢谢。如果我不想要“www.”怎么办?我不知道它是如何工作的,如果我包括www.和不工作,当我离开它。我很高兴我可以帮助。请考虑接受这个答案。祝你的商店好运!