为了使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上查找此问题,但尚未找到有效的解决方案。
我希望你们能帮助我:)
答案 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服务器错误日志中还有另一个条目。