.htaccess在url包含时不重定向?或=

时间:2014-01-31 02:57:03

标签: php .htaccess mod-rewrite redirect

任何人都可以告诉我,如果传入的网址包含某些文字,那么如何重定向就会出现问题。

例如:

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” ?

非常感谢任何帮助...

1 个答案:

答案 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]