.htaccess redirct导致循环

时间:2018-05-24 18:24:35

标签: .htaccess redirect

我想像这样做一些重定向:

Redirect 301 /foo /foo/bar/index.html

问题是,它会创建一个循环。

直观地说,我希望此重定向仅匹配/foo而不是/foo.*。但显然事情的工作方式不同。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

使用RedirectMatch代替Redirect,可以使用正则表达式进行精确匹配:

RedirectMatch 301 ^/foo/?$ /foo/bar/index.html

确保使用新的浏览器来测试此更改。

正则表达式^/foo/?$仅匹配/foo/foo/,但不匹配/foo/anything

答案 1 :(得分:0)

这是我的.htaccess示例文件。

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Redirect 301 /CPP001/ https://mydomainaddress.com/cpp/student-app/
Redirect 301 /DSE001/ https://mydomainaddress.com/cpp/examples/virtual.html
Redirect 301 /DSE002/ https://mydomainaddress.com/cpp/examples/overload.html
Redirect 301 /ANK001/ https://mydomainaddress.com/cpp/com267/
Redirect 301 /ANK002/ https://mydomainaddress.com/c-programming/com267HW2/
Redirect 301 /WEB001/ https://mydomainaddress.com/web-programming/examples/index.html
Redirect 301 /NET001/ https://mydomainaddress.com/pdf/IPControl.pdf
ErrorDocument 404 https://mydomainaddress.com/
ErrorDocument 403 https://mydomainaddress.com/

尝试将Redirect 301 /foo /foo/bar/index.html更改为Redirect 301 /foo http://yourdomain.com/foo/bar/index.html

如果index.html内部没有任何内容导致其他重定向,则循环再次发生的可能性极小。