任何人都可以告诉我,如果传入的网址包含某些文字,那么如何重定向就会出现问题。
例如:
RedirectMatch 301 / files / 9453041 / batch-BiDA http://secondsite.com(此工作)
RedirectMatch 301 /?load = / files / 9453041 / batch-BiDA http://secondsite.com(此操作无效)
只有上述两个重定向中的第一个工作,不确定为什么,但第二个包含/?load = doesnt重定向。有人可以在第二行告诉我需要更改的内容吗?
或者我想是否有可能无法工作,如果可以将每个传入的网址重定向到“mysite.com/?load=/whatever/whatever”到“mysite.com/whatever/whatever” ?
非常感谢任何帮助...
答案 0 :(得分:0)
为了匹配查询字符串(?
之后的所有内容),您需要使用重写条件匹配%{QUERY_STRING}
变量:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^load=/files/9453041/batch-BiDA
RewriteRule ^/?$ http://secondsite.com/ [L,R=301]
您还可以使用[OR]
:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^load=/files/9453041/batch-BiDA [OR]
RewriteCond %{QUERY_STRING} ^load=/files/35356441/batch-546A
RewriteRule ^/?$ http://secondsite.com/ [L,R=301]
等
但如果您不关心/files/
部分后面的内容,只需匹配数字:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^load=/files/[0-9]+/batch-[0-9A-Za-z]+
RewriteRule ^/?$ http://secondsite.com/ [L,R=301]