重定向包含 1 个以上变量的畸形 URL
Redirect a malformed URL with more than 1 variable
重定向 "malformed double ?"
我尝试以下操作:一个必须保持存活的旧 URL 是这样形成的:
/index.php?id=5041?var1=val1&var2=val2&var3=val3
我必须将它重定向到这样的内容:
/path1/path2/?id=1234?var1=val1&var2=val2&var3=val3
无论我尝试什么 - 它要么是 index.php 中的无限循环,要么是在 id 之后削减其余的变量。字符串的其余部分应该简单地附加。
即
#Only if id = 1234
RewriteCond %{QUERY_STRING} ^id=1234? [NC]
#get id for variable
RewriteCond %{QUERY_STRING} id=(\d+) [NC]
#get rest for variable
RewriteCond %{QUERY_STRING} val1=(\d+) [NC]
RewriteRule ^index\.php$ /path1/path2/?myid=%1&val2=%2
RewriteEngine on
RewriteCond %{THE_REQUEST} /index\.php\?id=([^?]+)\?var=([^&]+)&var2=([^&]+)&var3=([^\s]+) [NC]
RewriteRule ^index\.php$ /path1/path2/ [QSA,NC,L,R]
以上条件
RewriteCond %{THE_REQUEST} /id=([^?]+)\?var=([^&]+)&var2=([^&]+)&var3=([^\s]+) [NC
检查 /index.php 是否有特定的查询字符串,将其重定向到新位置。
重定向 "malformed double ?"
我尝试以下操作:一个必须保持存活的旧 URL 是这样形成的: /index.php?id=5041?var1=val1&var2=val2&var3=val3
我必须将它重定向到这样的内容:
/path1/path2/?id=1234?var1=val1&var2=val2&var3=val3
无论我尝试什么 - 它要么是 index.php 中的无限循环,要么是在 id 之后削减其余的变量。字符串的其余部分应该简单地附加。
即
#Only if id = 1234
RewriteCond %{QUERY_STRING} ^id=1234? [NC]
#get id for variable
RewriteCond %{QUERY_STRING} id=(\d+) [NC]
#get rest for variable
RewriteCond %{QUERY_STRING} val1=(\d+) [NC]
RewriteRule ^index\.php$ /path1/path2/?myid=%1&val2=%2
RewriteEngine on
RewriteCond %{THE_REQUEST} /index\.php\?id=([^?]+)\?var=([^&]+)&var2=([^&]+)&var3=([^\s]+) [NC]
RewriteRule ^index\.php$ /path1/path2/ [QSA,NC,L,R]
以上条件
RewriteCond %{THE_REQUEST} /id=([^?]+)\?var=([^&]+)&var2=([^&]+)&var3=([^\s]+) [NC
检查 /index.php 是否有特定的查询字符串,将其重定向到新位置。