当前位置: 首页 > 知识库问答 >
问题:

.htaccess -正在删除。html文件扩展名导致500内部错误(为什么应该是404?)

松昱
2023-03-14

我在用。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

共有1个答案

章承
2023-03-14
RewriteRule (.*)\.html$ $1 [R=301]

为了防止进一步的处理,在所有外部重定向上都需要< code>L (last)标志。例如:

RewriteRule (.*)\.html$ $1 [R=301,L]

此外,请确保禁用多视图

Options -Indexes -MultiViews

想必你已经链接到没有扩展名的URL了吧?

 类似资料:
  • 我一直在尝试让nginx在没有. php或. html扩展的情况下工作,我需要一点帮助。提前感谢您的时间! 我尝试了在如何使用NGINX从url中删除. php和. html扩展中找到的解决方案?但是没有效果 这是我当前的nginx配置。这是几个教程的组合,但它是有效的。

  • 问题内容: 给定一个文件名,例如: 我想删除扩展名(如果存在)。我怎样用Java做这个?谢谢! 问题答案: 就像是 索引检查可避免将“ ” 等隐藏文件转换为“”,并避免使用诸如的名称。

  • 问题内容: 在托管的IIS7环境中,我正在寻找使用无扩展名文件名的最简单方法。简单来说,我有以下页面: index.html(或.aspx)-> domain.com gallery.html-> domain.com/gallery videos.html-> domain.com/videos等… 我只有很少的页面,没有动态代码,没什么特别的。我发现的所有示例或在开发的其他站点中使用的方法都围

  • 根据SQL字符串组合文档,我想在postgresql数据库中执行DELETE语句: 这将导致以下错误: 另一方面,类似的execute工作正常: 我真的看不出有什么区别...

  • 我在尝试进行返回JSON的ajax POST调用时出现内部错误。ajax调用来自JS页面: 这是我的Spring MVC调用方法: 问题是,我在这个类中只设置了几个字段(30个字段中有17个)。这是一个具有简单setter-getter的bean类。如果我设置了所有30个字段,效果很好。你能建议如何设置JSON响应,以便我可以纠正这个问题吗。

  • 当我通过codeigniter应用程序进行调试时,错误似乎出现在codeigniter.php中的第308行,如下所示: 谁能告诉我怎么回事吗?