首页 > 解决方案 > .htaccess 文件 ([^\/]+) 不工作,但 ([1-9]+[0-9]*) 工作?

问题描述

我的项目网址是 /catalog/id/

例如:domain.com/life/women/268/

我试过很多次。为什么htaccess不能改写“妇女”,而只是改写数字'/268/'

不行

RewriteRule ^life/([^\/]+)/?$ life/list.php?cat=$1 [L,NC]
RewriteRule ^life/([^\/]+)/([^\/]+)/?$ life/info.php?cat=$1&id=$2 [L,NC]

不工作结果

Array ( [cat] => list.php )

如果全部使用号码,工作

RewriteRule ^life/([1-9]+[0-9]*)/?$ life/list.php?cat=$1 [L,NC]
RewriteRule ^life/([1-9]+[0-9]*)/([1-9]+[0-9]*)/?$ life/info.php?cat=$1&id=$2 [L,NC]

标签: .htaccessmod-rewrite

解决方案


您的第一次RewriteRule重写life/list.phplife/info.php. 您应该排除它们:

RewriteRule ^life/(?!(?:list|info)\.php\/?$)([^\/]+)/?$ life/list.php?cat=$1 [L,NC]
RewriteRule ^life/([^\/]+)/([^\/]+)/?$ life/info.php?cat=$1&id=$2 [L,NC]

推荐阅读