我的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
我猜重写条件应该照顾它但不能得到正确的条件。请帮忙。
答案 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
时,它就会使条件永远不会满足。