一旦应用了第三条规则,第三条规则也会自动应用,因为其模式与第一条规则的目标相匹配。
对于2.4版以后的apache http服务器,您可以使用结束标志而不是L标志来防止:
RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)\.php$ view-product.php?catSeoUrl=$1&subCatSeoUrl=$1&productSeoUrl=$3 [END]
RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)\.php$ products.php?catSeoUrl=$1&subCatSeoUrl=$1 [END]
RewriteRule ^([a-zA-Z0-9-]+)\.php$ products.php?catSeoUrl=$1 [END]
对于较旧的apache版本,您需要添加重写条件:
RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)\.php$ view-product.php?catSeoUrl=$1&subCatSeoUrl=$1&productSeoUrl=$3 [END]
RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)\.php$ products.php?catSeoUrl=$1&subCatSeoUrl=$1 [END]
RewriteCond %{REQUEST_URI} ^([^\]+)\.php$
RewriteRule ^([a-zA-Z0-9-]+)\.php$ products.php?catSeoUrl=$1 [END]
还有一个一般提示:您应该始终更喜欢将此类规则放置在http服务器(虚拟)主机配置中,而不是使用动态配置文件(
.htaccess
样式文件)。众所周知,这些文件容易出错,很难调试,而且它们确实会降低服务器的运行速度。只有在您无法控制主机配置的情况下(阅读:非常便宜的托管服务提供商),或者如果您的应用程序依赖于编写自己的重写规则(这显然是一场安全噩梦),才支持将其作为最后一个选项。