![多规则 Apache 重写](https://linux22.com/image/620802/%E5%A4%9A%E8%A7%84%E5%88%99%20Apache%20%E9%87%8D%E5%86%99.png)
我正在尝试使用 建立一个五级深度的层次结构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]