htaccess重定向不更改地址栏中的url

时间:2014-08-01 12:54:57

标签: .htaccess redirect url-rewriting

我的htaccess中有以下代码:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^shop/[A-Z]{3,9}\ /products\.php\?levelID=([^&]+)&level=([^&]+)\ HTTP/
RewriteRule ^shop/products\.php$ http://foo.info/product/%1/%2.html [R=301,L]
RewriteRule ^product/([^/]*)/([^/]*)\.html$ /shop/products.php?levelID=$1&level=$2 [L]

这成功地将动态URL内部重写为

http://foo.info/product/9/Laser%20printers.html

但我希望链接在BROWSER地址栏中自动更改为

http://foo.info/product/9/Laser%20printers.html

我猜重写条件应该照顾它但不能得到正确的条件。请帮忙。

2 个答案:

答案 0 :(得分:0)

如果您想重定向符合以下条件的网址

product/([^/]*)/([^/]*)\.html

http://inchotepro.info/shop/products.php?levelID=9&level=Laser%20printers 

然后你必须替换

[L]

[R=301,L]

我希望我说对了。

答案 1 :(得分:0)

尝试:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /shop/products\.php\?levelID=([^&]+)&level=([^&]+)\ HTTP/
RewriteRule ^shop/products\.php$ http://foo.info/product/%1/%2.html? [R=301,L]
RewriteRule ^product/([^/]*)/([^/]*)\.html$ /shop/products.php?levelID=$1&level=$2 [L]

%{THE_REQUEST}变量是HTTP请求的第一行,类似于:

GET /shop/products.php?levelID=123 HTTP/1.1

当您在其前面添加/shop时,它就会使条件永远不会满足。