Replace portions of a url path and query string using .htaccess and Regex?

前端 未结 2 630
[愿得一人]
[愿得一人] 2020-12-12 03:10

How do I replace :

https://www.example.com/index.php?option=com_k2&view=item&id=7377

By:

https://www.portal-gestao.         


        
相关标签:
2条回答
  • 2020-12-12 03:50

    You cannot capture query string in RewriteRule. Use a RewriteCond instead. Use this rule at top of your .htaccess:

    RewriteCond %{THE_REQUEST} /index\.php\?option=com_k2&view=item&id=([^\s&]+) [NC]
    RewriteRule ^ https://www.portal-gestao.com/artigos/%1? [L,R=302]
    
    0 讨论(0)
  • 2020-12-12 03:55

    You can also do this with RewriteCond Query String matching code:

    # Individual explicit redirect rules based on exact matching URI|Query String parameters
    # $1? Strip the option=com_k2&view=item&id=7377 Query String from the destination URI
    RewriteCond %{QUERY_STRING} ^option=com_k2&view=item&id=7377$ [NC]
    RewriteRule ^(.*)$ /artigos/7377/$1? [R=301,L]
    RewriteCond %{QUERY_STRING} ^option=com_k2&view=item&id=7378$ [NC]
    RewriteRule ^(.*)$ /artigos/7378/$1? [R=301,L]
    
    # Dynamically redirect all matching Query Strings to equivalent URI
    # %2 match and redirect to equivalent 4 digit number URI
    # $1? Strip the option=com_k2&view=item&id= portion of the Query String from the destination URI
    RewriteCond %{QUERY_STRING} ^(option=com_k2&view=item&id+)=([0-9]{4}+)$ [NC]
    RewriteRule ^(.*)$ /artigos/%2/$1? [R=301,L]
    
    0 讨论(0)
提交回复
热议问题