【问题标题】:Rewrite rule always redirect to wrong url重写规则总是重定向到错误的 url
【发布时间】:2013-11-02 17:52:12
【问题描述】:

大家好,
我需要将http://mysite.com/user/profile/following?profile_name=MYNAME 重写为http://mysite.com/user/profile/MYNAME/following

我写了这样的规则:

RewriteRule user/profile/(.*)/(.*) /user/profile/$2?profile_name=$1 [L,R=301]  

当我在浏览器中输入http://mysite.com/user/profile/MYNAME/following 之类的网址时,它总是将我重定向到http://mysite.com/user/profile/following?profile_name=MYNAME

我错过了什么?

提前致谢

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting url-rewrite-module


    【解决方案1】:

    您可以使用此代码:

    # external redirect from actual URL to pretty one
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+user/profile/([^?]+)\?profile_name=([^\s&]+) [NC]
    RewriteRule ^ /user/profile/%1/%2? [R=301,L]
    
    # internal forward from pretty URL to actual one
    RewriteRule ^user/profile/([^/]+)/([^/]*)/?$ /user/profile/$2?profile_name=$1 [L,NC,QSA]  
    

    【讨论】:

    • 谢谢。但同样的结果:(
    • 你在浏览器中输入了什么网址,是http://mysite.com/user/profile/following?profile_name=MYNAME吗?
    • 您也可以在您的问题中发布完整的 .htaccess 吗?
    • 这将在内部变成/user/profile/following?profile_name=MYNAME(浏览器中的URL不会改变)
    猜你喜欢
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    相关资源
    最近更新 更多