Question mark in the end of RewriteRule

前端 未结 1 1994
时光说笑
时光说笑 2020-12-12 00:52
RewriteCond %{QUERY_STRING}  ^id=(.*)$
RewriteRule ^oldpage\\.php$ http://new-site.com/newpage-%1 [R=301,L]
and
RewriteRule ^oldpage\\.php$ http://new-site.com/newpa         


        
相关标签:
1条回答
  • 2020-12-12 01:25

    The ? at the end of a destination (destinations are not regular expressions) means to go to that destination with no query string.

    RewriteCond %{QUERY_STRING}  ^id=(.*)$
    RewriteRule ^oldpage\.php$ http://new-site.com/newpage-%1 [R=301,L]
    

    If the query string contains only an id, it stores the value which is then used in the destination, so if you have

    http://foo.com/oldpage.php?id=54
    

    you'll end up with

    http://new-site.com/newpage-54?id=54
    

    If you have

    RewriteCond %{QUERY_STRING}  ^id=(.*)$
    RewriteRule ^oldpage\.php$ http://new-site.com/newpage-%1? [R=301,L]
    

    You'll go to the same destination but with an empty query string, so going to

    http://foo.com/oldpage.php?id=54
    

    will end up in

    http://new-site.com/newpage-54
    
    0 讨论(0)
提交回复
热议问题