自定义mod重定向无法正常工作

时间:2014-05-03 08:58:32

标签: .htaccess mod-rewrite

我查看了很多问题,但没有得到我的答案所以我发布了我的问题,因为我遇到了用htaccess重写网址的问题。

我的网址: 本地主机/ index.php的API =参数/ sub_param&安培; some_key = SOME_VALUE&安培; some_key2 = some_value2

我希望如何重写: 本地主机/ API / PARAM / sub_param some_key = SOME_VALUE&安培; some_key2 = some_value2

我知道网址结构有点不正确,但我仍然想要这样

RewriteEngine On
RewriteRule api/([a-z0-9_]+/[a-z0-9_]+)?([a-z0-9_])=([a-z0-9_])&([a-z0-9_])=([a-z0-9_]) index.php?api=$1&$2=$3&$4=$5

我不知道为什么我的代码无效。

如果我使用/而不是问题它是有效的我认为它不工作的唯一原因是问号,但我需要它。

2 个答案:

答案 0 :(得分:0)

我自己得到了答案我不知道如果有人可以解释它的工作原因我可以选择他的答案

工作代码:

RewriteRule api/([a-z0-9_]+/[a-z0-9]+) index.php?api=$1 [QSA]

答案 1 :(得分:0)

您之前的规则无效,因为您无法使用QUERY_STRING匹配RewriteRule。在任何情况下,您甚至不需要匹配/捕获查询字符串,因为这里只需要QSA标志。 QSA(查询字符串追加)标志在添加新查询参数时保留现有查询参数。

你正确的规则将是(正确的正则表达式和标志):

RewriteRule ^api/([a-z0-9_]+/[a-z0-9]+)/?$ index.php?api=$1 [QSA,NC,L]