【发布时间】:2011-01-14 07:58:51
【问题描述】:
我正在尝试为我的问题找到一个 mod 重写解决方案。
我有将近 6 个参数传递给我的 url,我想重写。
让我演示一个 3 个参数 (x,y,z) 的示例
url 是 list.php?x=1&y=2&z=3 所以规则是
RewriteRule ^list/x/([^/\.]+)/y/([^/\.]+)/z/([^/\.]+)/?$ list.php?x=$1&y=$2&z=$3
到目前为止还不错。
真正棘手的部分(至少对我而言)是参数 x,y,z 没有预测顺序,因此 url 可能是
list.php?z=2&x=4&y=9
或
list.php?y=2&z=4&x=9
加 参数不能全部放在一起 前
list.php?z=4
或
list.php?x=7&z=7
或 3 个参数的任意组合
所以对于 3 个参数,我必须编写所有可能的组合 (RewriteRule)
所以我的 htaccess 实际上是 7 页,有 6 个参数,如果想再添加一个,必须编写新规则并更正所有其他规则
还有其他方法可以实现吗?
举例
如果 mod 单独重写每个参数,但是当多个参数来自 URL 以组合每个参数的规则时。
示例
RewriteRule parameter x rewrite to x/$1
RewriteRule parameter y rewrite to y/$2
所以当两个参数都变成 x/$1/y/$2
或者一些聪明的方法,我不必编写 7 页的规则并且更容易修改
我希望它清楚
【问题讨论】:
-
如果参数可以是任何顺序,它们不应该作为路径信息传递。路径信息仅适用于分层名称。
-
有什么理由不只使用查询字符串?
-
除非您正在创建重复的内容,这对 SEO 不友好 (google.com/support/webmasters/bin/…)。此外,“list/x/1/y/2/z/3”并不比“list?x=1&y=2&z=3”更干净。您需要传递给脚本的实际参数是什么?
标签: mod-rewrite