0

如何用 .htaccess 重写

?p_action=user_profile to /user

它似乎忽略了“?” 性格,我不知道该怎么办......

谢谢

更多细节:(我的问题现在已经扩大......:P)

我有www.example.com/?p_action=user_profile&post_author=34 并且我希望浏览器显示www.example.com/nice_url 当我在浏览器中输入“丑陋”或“漂亮”的网址时。

即如果我输入www.example.com/nice_url,我希望 url_rewrite 发生,如果我输入 www.example.com/?p_action=user_profile&post_author=34,我希望它重定向到www.example.com

问题:我可以点头改写“?” 标记,但我克服了它(幸运的是)。

现在这是我的代码:

RewriteRule ^nice_url$  ?p_action=user_profile&post_author=34 [L]       

RewriteCond %{QUERY_STRING}  p_action=user_profile&post_author=34
RewriteRule (.*)  http://www.example.co.il/nice_url?    [R=301,L]

但是,这会产生一个循环......

我试着添加这个

RewriteCond %{ENV:REDIRECT_STATUS} 200 #looks if there was a redirect
RewriteRule .* - [L]

但这并没有帮助。我想这是因为我正在使用 Wordpress 并且已经有一些重定向......

请帮忙。如何让我的浏览器始终显示“www.example.com/nice_url”?

谢谢!

4

1 回答 1

1

将重定向状态条件直接添加到规则中。

RewriteRule ^nice_url$  ?p_action=user_profile&post_author=34 [L]

RewriteCond %{ENV:REDIRECT_STATUS} !=200
RewriteCond %{QUERY_STRING}  p_action=user_profile&post_author=34
RewriteRule .*  http://www.example.co.il/nice_url?    [R=301,L]

这也可以防止弄乱其他 WordPress 规则。

于 2013-08-25T20:59:53.637 回答