多规则 Apache 重写

多规则 Apache 重写

我正在尝试使用 建立一个五级深度的层次结构mod_rewrite。这是我目前整理的内容。它适用于最后两个级别(第一和第二条规则),但之后不适用。任何帮助都将不胜感激。

RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /mr/index.php?product_group=$1&product_family=$2&product_category=$3&product_sub_category=$4&product=$5 [C]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /mr/index.php?product_group=$1&product_family=$2&product_category=$3&product_sub_category=$4 [C] 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /mr/index.php?product_group=$1&product_family=$2&product_category=$3 [C]
RewriteRule ^([^/]*)/([^/]*)$ /mr/index.php?product_group=$1&product_family=$2 [C] 
RewriteRule ^([^/]*)$ /mr/index.php?product_group=$1 [L]

我不是服务器技术人员。我是一名开发人员,只是搞不懂这一点。这些规则中的每一个都单独运行良好。我需要规则从一级到五级以及其间的每一级都起作用。我需要一种对 SEO 友好的深入式导航。

答案1

看起来您已将所有规则与[C]标志链接在一起。请参阅文档以解释它们的含义。您可能希望[L]使用“last”。

还值得注意的是,规则将一直运行,直到 URL 不再改变为止;因此,倒数第二条规则可能会创建重写循环,除非您在它之前有一条类似于这样的规则:

RewriteRule ^/mr/index.php$ - [L]

编辑:为了清楚起见,我建议从以下几点开始。你可能会从中得到一些启发提供的日志记录mod_rewrite

RewriteRule ^mr/index.php$ - [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/?$ /mr/index.php?product_group=$1&product_family=$2&product_category=$3&product_sub_category=$4&product=$5 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/?$         /mr/index.php?product_group=$1&product_family=$2&product_category=$3&product_sub_category=$4 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/?$                 /mr/index.php?product_group=$1&product_family=$2&product_category=$3 [L]
RewriteRule ^([^/]*)/([^/]*)/?$                         /mr/index.php?product_group=$1&product_family=$2 [L]
RewriteRule ^([^/]*)/?$                                 /mr/index.php?product_group=$1 [L]

相关内容