htaccess 301 redirect issue with url variables

血红的双手。 提交于 2019-11-27 03:34:10

问题


If I use this code, it's successful:

Redirect 301 /products.php http://website.com.au/product_123.php

But if I do this, it isn't:

Redirect 301 /products.php?id=123 http://website.com.au/product_123.php

Note the variable in the url is what's causing it to fail.

What am I doing wrong? Is there another way to do this? I really need the urls variables.


回答1:


You can't put query string parameters in the source URI path of the Redirect directive. You'll have to use mod_rewrite's %{QUERY_STRING} variable for that:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=123$
RewriteRule ^/?product\.php$ http://website.com.au/product_123.php? [L,R=301]

Or to make it more general:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=([^&]+)
RewriteRule ^/?product\.php$ http://website.com.au/product_%1.php? [L,R=301]


来源:https://stackoverflow.com/questions/13988815/htaccess-301-redirect-issue-with-url-variables

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!