我不知道如何重写此类型的网址:
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上)一行。这种形式的链接非常简单,用-
(连字符)符号分隔。
答案 0 :(得分:0)
我建议使用简单的重写规则,然后修改Web应用程序的代码来完成难点,而不是依赖于复杂的重写规则。支持这种变量参数并不是重写规则本身非常擅长的。
我会使用以下重写规则拦截任何包含连字符分隔符并以.html
RewriteRule ^(.+[\-].+)\.html$ /query.html?params=$1
然后在您的Web应用程序中,可以从名为params
的CGI参数中获取参数。他们现在看起来像param1-val1-param3-val3-param4-val4
。然后,您的代码应在连字符上拆分,然后将参数放入映射中。大多数Web框架都支持添加或覆盖请求参数的某种方式。如果是这样,您可以在不对代码的其余部分进行侵入性修改的情况下执行此操作。