【发布时间】:2021-12-14 02:59:26
【问题描述】:
来自这个网址
www.example.com/error_documents/404
到这个网址
www.example.com/404
我尝试了许多不同的 .htaccess 规则,但都没有奏效。 我试图从 URL 中隐藏 /error_pages/ 文件夹部分,而不进行任何实际重定向,因为如果我编写了正确的 *RewriteRule,它只会不断重复自己,我会收到 ERR_TOO_MANY_REDIRECTS 错误,因为如果你想去一个未知的文件夹,错误文档重定向到 example.com/error_documents/404,如果我将它重写为 example.com/404,它是未知的文件夹,因此它试图将我重定向到 /error_documents/404 页面,但 htaccess 文件不断重定向到 forever 循环。
当前的 .htaccess 文件
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+error_pages/([^\s]+) [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (?!^error_pages/)^(.*)$ /error_pages/$1 [L,NC]
这个 .htaccess 给了我永远的循环:
www.example.com/unknownfolder
到
www.example.com/error_documents/404
到
www.example.com/404
而且这一直在重复......
我将 cPanel 用于 ErrorDocuments,主 .htaccess 文件是:
ErrorDocument 400 http://example.com/error_pages/400
ErrorDocument 401 http://example.com/error_pages/401
ErrorDocument 403 http://example.com/error_pages/403
ErrorDocument 404 http://example.com/error_pages/404
ErrorDocument 503 http://example.com/error_pages/503
Options -Indexes
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
【问题讨论】:
标签: apache .htaccess redirect mod-rewrite url-rewriting