1

我不知道如何重写这种类型的 URL:

mywebsite/param1-val1-param2-val2-param3-val3-param4-val4.html 

这真的很简单,但我的问题是我的参数是变量,如:

mywebsite/param1-val1-param3-val3-param4-val4.html 

或者

mywebsite/param3-val3-param4-val4.html 

因此,参数的数量并不总是相同的。有时可能只有一个,有时可能是 10 个或更多。它重定向到一个搜索脚本,该脚本将通过 GET 查询字符串获取参数。

我想要做的是不为每个链接写(在 htaccess 上)一行。链接形式非常简单,由-(连字符)符号分隔。

4

1 回答 1

1

我建议不要依赖复杂的重写规则,而是建议一个简单的重写规则,然后修改您的 Web 应用程序的代码来完成困难的部分。支持这种可变参数并不是重写规则本身非常擅长的事情。

我将使用以下重写规则来拦截任何包含连字符分隔符并以.html

RewriteRule ^(.+[\-].+)\.html$ /query.html?params=$1

然后在您的 Web 应用程序中可以从名为params. 他们现在看起来像这样param1-val1-param3-val3-param4-val4。然后,您的代码应该在连字符上拆分,然后将参数放入映射中。大多数 Web 框架都支持以某种方式添加或覆盖请求参数。如果是这样,您可以在不对其余代码进行侵入性修改的情况下执行此操作。

于 2013-02-14T14:17:18.103 回答