【问题标题】:Redirecting using regular expression in .htacces在 .htaccess 中使用正则表达式进行重定向
【发布时间】:2019-08-20 14:31:43
【问题描述】:
我必须重定向网址,例如
www.site.com/?page=user?id=5
类似于
www.site.com/users/5
我写了这个正则表达式
.*\?page=(.*)&id=(.*)
但是好像不行?
完整的重定向规则:
Redirect 302 ^/.*index.php\?page=(.*)&id=(.*) /$1/$2
【问题讨论】:
标签:
regex
.htaccess
redirect
url-rewriting
【解决方案1】:
Redirect 指令仅适用于 URL 路径,即 /index.php ? 之后的部分是 QUERY_STRING 的一部分,并且无法使用重定向进行匹配,您需要使用 mod-rewrite
RewriteEngine on
RewriteCond %{QUERY_STRING} ^page=([^&]+)&id=(.+)$ [NC]
RewriteRule ^index\.php$ /%1/%2? [L,R]