Mod rewrite htaccess:如何最小化这些规则

Mod rewrite htaccess:如何最小化这些规则,mod-rewrite,url-rewriting,Mod Rewrite,Url Rewriting,我正在为一个产品站点使用htaccess mod_rewrite 当要添加产品时 我在url中创建了产品类别的层次结构 像 任何一个都可以缩短此长度,以便所有类别都可以由一条规则处理。使用您的站点所使用的服务器端语言(如PHP)进行此类url重写会容易得多。如果这些url存储在数据库中,则可以添加一个表列来存储调用每个url时应执行的脚本名称。感谢您的建议,我保留规则不变,因为除了冗余之外没有其他问题。解决方案:重写规则^Place ad/?([^/]*)/?([^/]*)/?([^/]*)/(

我正在为一个产品站点使用htaccess mod_rewrite

当要添加产品时

我在url中创建了产品类别的层次结构 像


任何一个都可以缩短此长度,以便所有类别都可以由一条规则处理。

使用您的站点所使用的服务器端语言(如PHP)进行此类url重写会容易得多。如果这些url存储在数据库中,则可以添加一个表列来存储调用每个url时应执行的脚本名称。

感谢您的建议,我保留规则不变,因为除了冗余之外没有其他问题。解决方案:重写规则^Place ad/?([^/]*)/?([^/]*)/?([^/]*)/([^/]*)/([^/]*)/?([^/]*)/?new_ad.php?c1=$1&c2=$2&c3=$3&c4=$4[NC,L]这是我所需要的。这里/?使evan斜杠为自选,并且([^/]*)被翻译为“不斜杠或什么都不做”,使所有4个反向引用都为可选。现在我用这条规则替换4条规则。 1) http://www.example.com/Place-an-ad/Cars/Mazda/mazda-y/mazda-y-2/ 4 levels here 2) http://www.example.com/Place-an-ad/Books/Science/ 2 levels here 3) http://www.example.com/Place-an-ad/Realestate/Apprtments/small/ 3 levels here
RewriteRule ^Place-an-ad/(.*)/(.*)/(.*)/(.*)/(.*)/?$ new_ad.php?c1=$1&c2=$2&c3=$3&c4=$4 [NC,L] # for 4 level categories
RewriteRule ^Place-an-ad/(.*)/(.*)/(.*)/(.*)/?$ new_ad.php?c1=$1&c2=$2&c3=$3 [NC,L]  # for 3 level categories
RewriteRule ^Place-an-ad/(.*)/(.*)/(.*)/?$ new_ad.php?c1=$1&c2=$2 [NC,L] # for 2 level categories
RewriteRule ^Place-an-ad/(.*)/(.*)/?$ new_ad.php?c1=$1 [NC,L] # for 1 level category