我试图设置一个简单的htaccess规则,但是没有用。
我认为问题出在?
和=
个字符上?
代码是:
Options +FollowSymLinks
ErrorDocument 404 /php/404redirect.php
RewriteEngine on
RewriteRule ^productos.php?id=([0-9]+)$ /?view=productos&id=$1 [L,NE,B,QSA]
这总是给我错误404.
我想要的是重定向所有请求:
www.example.com/productos.php?id=X
到
www.example.com/?view=productos&id=X
答案 0 :(得分:3)
Querystring不是RewriteRule指令中匹配的一部分,要重定向查询字符串,您需要使用RewriteCond以下选项之一:
选项1
RewriteEngine on
RewriteCond %{THE_REQUEST} /product\.php\?id=([^&\s] [NC]
RewriteRule ^ /?view-product&id=%1? [NC,L,R]
选项2
RewriteEngine on
RewriteCond %{QUERY_STRING} ^id=([^&]+)$ [NC]
RewriteRule ^product\.php$ /?view-product&id=%1? [NC,L,R]
我们在目标网址末尾使用空白问号?来丢弃旧的查询字符串,否则这些查询字符串会默认显示在目标网址上。
如果要将重定向设为永久性,请将 R 更改为 R = 301 。
答案 1 :(得分:2)
RewriteRule ^productos.php /?view=productos [L,NE,B,QSA]
或者如果您想重定向
RewriteRule ^productos.php /?view=productos [L,NE,B,QSA,R=301]