opencart中.htaccess中的url之间不允许存在点

opencart中.htaccess中的url之间不允许存在点,.htaccess,mod-rewrite,url-rewriting,opencart,.htaccess,Mod Rewrite,Url Rewriting,Opencart,我一直试图在我的url中包含点,但.htaccess重写规则并不能帮助我这么做。 我一直在使用下面的表达式 RewriteRule ^user/(\w+)/([-a-zA-Z0-9_\.]) index.php?id=$1&route=$2 [L,QSA] 虽然这允许我在url的末尾添加一个点,但它不允许我在url之间添加点 例如,如果我使用 http://localhost/opencart/user/vendor_name. 它不会给出错误,但是如果我使用 http://loca

我一直试图在我的url中包含点,但.htaccess重写规则并不能帮助我这么做。 我一直在使用下面的表达式

RewriteRule ^user/(\w+)/([-a-zA-Z0-9_\.]) index.php?id=$1&route=$2 [L,QSA]
虽然这允许我在url的末尾添加一个点,但它不允许我在url之间添加点

例如,如果我使用 http://localhost/opencart/user/vendor_name.

它不会给出错误,但是如果我使用 http://localhost/opencart/user/vendor.name

它给出了一个“未找到页面”错误


谁能给我一个表达式让我这么做。

因为你的正则表达式是错误的。[-a-zA-Z0-9\.]将只匹配斜杠后的单个点

试试这个规则

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^user/[-\w.]+)/([-\w.]+)/?$ index.php?id=$1&route=$2 [L,QSA]

检查此链接:假设htaccess文件位于opencart目录下,即URI用户/供应商名称中,则不知道这些是如何工作的。永远不会匹配^user/\w+/[-a-zA-Z0-9\.]。URI中只有一个斜杠,regex模式中有两个斜杠。非常感谢Shankar使用[^/]在我的情况下非常有效。问题在于第二个参数\w+的问题。问题解决了。无论如何,谢谢你的帮助。不,不是真的。DOT不需要在字符类内转义。-如果放置在字符类的第一个或最后一个位置,也不需要转义。