Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
Regex 重定向不以特定字符串开头的URL_Regex_Apache_.htaccess_Redirect_Url Rewriting - Fatal编程技术网

Regex 重定向不以特定字符串开头的URL

Regex 重定向不以特定字符串开头的URL,regex,apache,.htaccess,redirect,url-rewriting,Regex,Apache,.htaccess,Redirect,Url Rewriting,大家好,我正试图得到一个重定向工作,但我不断得到错误“太多重定向”。。。 我想重定向所有不以特定字符串开头的URL,我写了这篇文章和许多其他文章,但都不起作用: RewriteRule !^(?=string1)(?=string2)(?=string3)/(.*) / [R=301,L] 有什么问题吗? 谢谢您需要在重定向中排除主页: RewriteRule ^(?!string1|string2|string3|$) / [R=301,L] 但是,在清除浏览器缓存之前,这不会起作用。当您

大家好,我正试图得到一个重定向工作,但我不断得到错误“太多重定向”。。。 我想重定向所有不以特定字符串开头的URL,我写了这篇文章和许多其他文章,但都不起作用:

RewriteRule !^(?=string1)(?=string2)(?=string3)/(.*) / [R=301,L]
有什么问题吗?
谢谢

您需要在重定向中排除主页:

RewriteRule ^(?!string1|string2|string3|$) / [R=301,L]

但是,在清除浏览器缓存之前,这不会起作用。当您这样做时,它将停止重定向太多次。

您应该将模式编写为
RewriteRule^/(?!string1 | string2 | string3)(.*)/[R=301,L]
。或者
^/(?!(?:string1 | string2 | string3)/).
谢谢Wiktor的回复,它几乎工作得很好,我不得不删除第一个“/”,但它会在主页的循环中重定向。我这样更改它以排除主页:
RewriteRule^(?)/(string1 | string2 | string3)(.*)/(R=301,L)
,但它实际上不起作用:/Try
RewriteRule^/(?!string1 | string2 | string3 |$)(.*)/(R=301,L)
,或者,如果第一个
/
规则仍然有问题,
RewriteRule^(?/1 |/string2 |/string3 |/(Stringr=301,R)/]
这两种解决方案仍然不起作用:(嗯,如果
^(?!string1 | string2 | string3)。*
(匹配任何不以
string1
string2
string3
开头的字符串)不工作,您需要.htaccess专家帮助。您好,谢谢您的回复。我清除了缓存并尝试了您的代码,它不会在主页的循环中重定向,它不会重定向url site.com/string1/mypage/,但它会重定向url site.com/string2/mypage/,重定向后,它会附加查询字符串:site.com/string2/mypage/=>site.com/?var\u name=mypage@Websphere此规则将以相同的方式处理这两个路径。您的htaccess文件中是否有其他规则?您是对的,我必须在htaccess文件的开头移动此规则,所有操作都非常有效。非常感谢:)但是,碰巧连404错误也被重定向,有没有排除不同类型错误(404503,…)的方法?@Websphere您可以为
%{ENV:REDIRECT\u STATUS}
添加一个条件。