我在用。htaccess来移除。我的网址的html扩展。例如...
https://www.example.com/work.html
我希望能够有一个网站显示404页(或正确的错误页面),如果有人试图访问一个文件/目录不存在(例如)https://www.example.com/work/new.,但这返回一个500内部服务器错误。
.htaccess 行 ErrorDocument 500 /errors/500.html 不返回该文件(它适用于 404、403 等)。它返回此错误...
此外,尝试使用错误文档处理请求时遇到 500 内部服务器错误错误。
Apache错误日志说...
AH00124:由于可能的配置错误,请求超过了10个内部重定向的限制。如有必要,请使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯。
我假设这主要是因为它试图在html文件中找到一个目录(试图在html文件“work.html”中找到目录“new”),所以返回500服务器错误而不是404。
下面是我的。htaccess文件。有没有人能提供更好的方法或解决方法?
# Disable Directory Listing
Options -Indexes
# X-Robots-Tag
Header set X-Robots-Tag "noindex, nofollow"
# Rewrite Engine
RewriteEngine On
# Root Directory
RewriteBase /
# Remove .html Extension
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.html\ HTTP
RewriteRule (.*)\.html$ $1 [R=301]
# Remove index + Reference Directory
RewriteRule (.*)/index$ $1/ [R=301]
# Remove Trailing Slash **If Not Directory**
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]
# Forward Request To html File, **But Don't Redirect (Bot Friendly)**
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.html [L]
# Errors
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
RewriteRule (.*)\.html$ $1 [R=301]
为了防止进一步的处理,在所有外部重定向上都需要< code>L (last
)标志。例如:
RewriteRule (.*)\.html$ $1 [R=301,L]
此外,请确保禁用多视图
:
Options -Indexes -MultiViews
想必你已经链接到没有扩展名的URL了吧?