我想像这样做一些重定向:
Redirect 301 /foo /foo/bar/index.html
问题是,它会创建一个循环。
直观地说,我希望此重定向仅匹配/foo
而不是/foo.*
。但显然事情的工作方式不同。我该如何解决这个问题?
答案 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
内部没有任何内容导致其他重定向,则循环再次发生的可能性极小。