【问题标题】:htaccess misconfiguration 500htaccess 错误配置 500
【发布时间】:2021-05-03 23:42:19
【问题描述】:
所以基本上我创建了一个 .htaccess 文件,它删除了 .html 扩展名并将 /file.html 重定向到 /file 但是当我写 /file.html/ 时会导致 500 内部服务器错误,我该如何映射 /file.html /到我的自定义错误页面?或者只是将其重定向到 /file.html
代码如下:
Options -Indexes
ErrorDocument 404 /custom404.html
ErrorDocument 403 /custom404.html
ErrorDocument 500 /custom404.html
RewriteEngine on
RewriteCond %{THE_REQUEST} \.html [NC]
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [L]
【问题讨论】:
标签:
linux
apache
.htaccess
mod-rewrite
url-rewriting
【解决方案1】:
对于您显示的示例,您能否尝试以下操作(规则中已添加 cmets 以进行说明)。请确保在测试您的 URL 之前清除您的浏览器缓存。
Options -Indexes
ErrorDocument 404 /custom404.html
ErrorDocument 403 /custom404.html
ErrorDocument 500 /custom404.html
RewriteEngine on
##Added additional condition to make sure this runs from external request only.
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{THE_REQUEST} \s/.*\.html\s [NC]
RewriteRule ^(.*)\.html/?$ /$1 [R=301,L,NC]
##Simply rewrite from non-existing pages to html files.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1\.html -f
RewriteRule ^(.*)/?$ $1.html [L]