【问题标题】: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]
    

    【讨论】:

      猜你喜欢
      • 2017-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多