没有R = 301的mod_rewrite不起作用

时间:2013-07-10 10:03:37

标签: mod-rewrite url-rewriting apache2 url-rewrite-module

我正在使用以下mod_rewrite规则来进行当前重定向。但我真正想要实现的是两个url都能正常工作:

请求的网址示例:http://sandbox.local/services/userdetails/get.json?username=beebee&ugc_token=abcdef

重写网址:http://sandbox.local/services/userdetails/username/beebee.json?ugc_token=abcdef

重写规则:

RewriteCond %{QUERY_STRING} (username|uid)=([^&]+)&(.*)
RewriteRule ^services/userdetails/get.json$ /services/userdetails/%1/%2.json?%3 [NE,L,R=301]

以上规则有效,但会重定向用户。如果我删除R=301然后规则停止运行,我只会得到一个404页面。有没有办法保留相同的请求URL,而不是301重定向?

1 个答案:

答案 0 :(得分:0)

我忘了提到我正在使用Drupal。

因为我正在使用Drupal,所以我需要更改我的RewriteRule,以便它实际将请求发送到index.php并解决了问题:

RewriteCond %{QUERY_STRING} (username|uid)=([^&]+)&(.*)
RewriteRule ^services/userdetails/get.json$ index.php?q=services/userdetails/%1/%2.json&%3 [NE,L]