如何使用Apache mod_rewrite隐藏.html扩展名

如何使用Apache mod_rewrite隐藏.html扩展名

我有一些静态网站,我只想隐藏.html扩展名:

  • url /foo获取静态文件/foo.html

  • 浏览器仍然显示网址 /foo

然后客户端可以发送风格的书签mydomain.com/foo而不是mydomain.com/foo.html

这听起来非常简单,mod_rewrite之前我曾经愉快地使用过(比如使用WordPress或重定向),但事实证明这更难破解。也许我错过了一些非常明显的东西,但我无法在任何地方找到解决方案而且我整天都在这里!

我们运行自己的服务器,所以这可以去哪里是最好的地方。

附录

下面检查的解决方案工作正常。然后在运行该网站一段时间后,我注意到两个问题:

  1. 所有页面都开始显得格格不入。我重新加载,清除缓存等,但仍然没有风格。我以前遇到过这个麻烦,找不到来源。

  2. 有一个目录和一个名为'gallery'的html文件,因此/ gallery链接显示了一个目录列表而不是html文件。我应该可以排序那个,但欢迎进一步提示:-)


LEATH
浏览 977回答 3
3回答

犯罪嫌疑人X

试试这条规则:RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]这将重写所有可以在追加时映射到现有文件的请求.html。

蓝山帝景

当网站配置了虚拟主机/文档根时,接受的解决方案不起作用。有我使用的解决方案:RewriteEngine onRewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}.html -fRewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]
打开App,查看更多内容
随时随地看视频慕课网APP