Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php .htaccess内重写规则中出现异常_Php_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Php .htaccess内重写规则中出现异常

Php .htaccess内重写规则中出现异常,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,我有一个重写规则如下: RewriteRule ^([^/\.]+)/?$ "http://example2.com/test?id=$1" [NE,L,QSA] 它基本上会将我的域名后面的任何内容重定向(例如www.example1.com/testing到www.example2.com/test?id=testing)。示例1和示例2都指向同一个IP 我想在上述规则中添加一个例外,以便该规则根本不考虑www.example1.com/abcxyz 我尝试了RewriteCond%{REQ

我有一个重写规则如下:

RewriteRule ^([^/\.]+)/?$ "http://example2.com/test?id=$1" [NE,L,QSA]
它基本上会将我的域名后面的任何内容重定向(例如www.example1.com/testingwww.example2.com/test?id=testing)。示例1和示例2都指向同一个IP

我想在上述规则中添加一个例外,以便该规则根本不考虑www.example1.com/abcxyz


我尝试了
RewriteCond%{REQUEST\u URI}/abcxyz
但它似乎因为说了太多重定向而出错。我是否遗漏了一些内容???

错误是由您的重定向URL再次与重定向匹配引起的。你也需要排除这一点。尝试:

RewriteCond %{REQUEST_URI} !=/abcxyz
RewriteCond %{REQUEST_URI} !=/test
RewriteRule ^([^/.]+)/?$ http://example2.com/test?id=$1 [NE,L,QSA]
请记住,查询字符串不是
RewriteRule
匹配的一部分,因此重定向到
test
会再次匹配自身并导致循环

你不需要在字符类中转义点,所以我改变了这一点。不需要双引号

你是在重定向还是重写?如果重定向,则应显式添加带有所需类型的
R
标志。对于
301
使用:

RewriteCond %{REQUEST_URI} !=/abcxyz
RewriteCond %{REQUEST_URI} !=/test
RewriteRule ^([^/.]+)/?$ http://example2.com/test?id=$1 [R=301,NE,L,QSA]
如果重写,则不应在其中包含域和协议:

RewriteCond %{REQUEST_URI} !=/abcxyz
RewriteCond %{REQUEST_URI} !=/test
RewriteRule ^([^/.]+)/?$ /test?id=$1 [NE,L,QSA]

你没明白你的问题吗?你能解释一下吗?我的错误是我在重写前写了重写规则,没有意识到这很重要。重写条件%{REQUEST_URI}/abcxyz在那之后似乎工作正常。很好,很高兴你把它修好了。RewriteCond指令实际上是在RewriteRule匹配之后运行的,但是是的,它们必须放在前面。我猜你实际重写的URL不匹配,只有你的例子这样做。