.htaccess文件不会覆盖html,而是在页面上显示标记

时间:2017-08-10 06:33:59

标签: html apache .htaccess

我正在构建一个个人网站,我希望我的网址链接看起来像domainname.com/example而不是domainname.com/example.html

我正在使用fastcomet进行虚拟主机服务。在我的public_html文件夹下,我有一个.htaccess文件。这是我的.htaccess文件的代码。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
</IfModule>

我的.htaccess文件和我所有的html,css,js文件都在home / username / public_html /下面,并且我从所有的html文件中删除了.html扩展名。在我应用这些更改后,我尝试获取http://domainname.com/example并且我看到了html标记而不是渲染的html,例如:

<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml">
<all my code .... />
</html>

有关我应该做什么的任何建议?我将.htaccess文件放在错误的目录中?我也在.htaccess文件中尝试使用和不使用Ifmodule标记。

谢谢!

2 个答案:

答案 0 :(得分:0)

  

我已从所有html文件中删除.html扩展程序

这就是您看到页面代码的原因。

重命名文件并使用以下重写规则:

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)\.html$ /$1 [L,R=301]
</IfModule>

答案 1 :(得分:0)

FastComet团队在这里!我们共享托管环境的一部分是利用NginX作为Apache Web服务的反向代理。这意味着静态内容(如HTML文件)由NginX直接处理,而不是由Apache处理。这就是您应用于网站.htaccess文件的任何规则未进行任何实际更改的原因。对HTML文件的请求将由NginX直接处理,并且不会传递给Apache,因此.htaccess规则将被忽略。

有一种简单的方法可以解决这个问题。我们可以排除您的域甚至整个主机帐户的HTML和HTM文件的处理。这样,这些请求将由Apache Web服务器处理,而不是NginX。在这种情况下,系统会考虑您应用的.htaccess规则,它们可以正常运行。要实现这一目标,只需向我们的技术支持团队提交一张票,我们将很乐意为您提供帮助。