从URL删除文件扩展名后重定向到网页时出现500 Internal Server Error

时间:2018-09-25 09:03:07

标签: html .htaccess

为了使URL导航更容易,准备一些将来的SEO,我从在线投资组合中的URL中删除了文件扩展名。我是通过.htaccess中的以下代码完成此操作的:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule (.*) $1.html [L]

当我想从网页重定向到投资组合projecten.html上的特定网页时,我得到一个Internal Server Error (500),这告诉我对此进行的内部重定向太多(最多10个)页。除该页面外,所有其他页面重定向都没有问题。

projecten.html链接到具有其他三个HTML页面的文件夹project。域上的所有其他页面都重定向到根文件夹中的页面。没有其他文件或文件夹具有完全相同的名称。

我是一名内心的设计师,但是我对前端开发有相当的了解。我尝试在Google上查找此问题,但尚未找到有效的解决方案。

我希望你们能帮助我:)

1 个答案:

答案 0 :(得分:0)

现在,借助对问题的评论,我开始了解...

您的问题是%{REQUEST_FILENAME}在重写过程的迭代之间没有变化。请注意,[L]标志仅终止 current 迭代的重写过程。但是由于它更改了请求目标,因此开始了另一个迭代。在该迭代中,由于%{REQUEST_FILENAME}不变(无论您执行了什么内部重写,该URL都仍然是所请求的URL),因此再次应用了该规则。

最简单的解决方法是使用[END]标志代替[L]标志如果您的http服务器版本足够新(从2.4开始)。因此:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule (.*) $1.html [END]

但是再次:请注意,这仅适用于2.4版以上的http服务器。如果是旧版本(2.0或2.2),您将再次收到http状态500,但在http服务器错误日志中还有另一个条目。