我的网站上有旧版的单点登录。父网站使用以下网址将用户发送到我的网站:
http://test.instela.fm/index.php?gid=abcd1234&u=thedewil&id=11472
我希望将其重写为:
http://test.instela.fm/login/abcd1234/thedewil/11472
我创建了一个 .htaccess 文件,如下所示:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^index.php?gid=(.*)&u=(.*)&id=(.*)$ login/$1/$2/$3 [L]
我尝试将URL中的问号转义为:
RewriteRule ^index.php\?gid=(.*)&u=(.*)&id=(.*)$ login/$1/$2/$3 [L]
但是,遗憾的是这些规则都不匹配并重写URL,我无法理解为什么。
答案 0 :(得分:2)
您无法在RewriteRule指令的模式中与url QueryString匹配。您只能在RewriteRule中匹配url路径(即:index.php
)。 ?
符号后面的URL部分是URL QueryString。您需要与%{QUERY_STRING}
中的RewriteCond
变量匹配。
RewriteEngine on
RewriteCond %{QUERY_STRING} ^gid=([^&]+)&u=([^&]+)&id=([^&]+)$ [NC]
RewriteRule ^index.php$ /login/%1/%2/%3? [L,R]