【发布时间】:2021-04-08 13:38:08
【问题描述】:
嗨!我的英文不是很好,如有拼写错误,请见谅。
使用 .htaccess 我想添加 www. 和删除/隐藏 .html。
它应该看起来像这样:
之前 --
http://example.com/whatever.html
之后 -----
http://www.example.com/whatever
我有.www加法器:
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1
还有.html卸妆
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /$1 [N]
如何连接它们?
注意:它想从我页面上的每个.html 文件中删除/隐藏.html。
我使用这个工具来测试我的 .htaccess 文件:https://htaccess.madewithlove.be
感谢您的帮助。
【问题讨论】:
-
"...并将
https://替换为http://" - 为什么?您真的不应该从 HTTPS 重定向到 HTTP(即向后)。为了从 HTTPS 重定向 ,无论如何您都需要已经通过 HTTPS 成功连接,所以这使得该过程开始时毫无意义。 -
“我不想将
/whatever.html更改为/whatever/” - 但这正是您在示例中所做的?您声明要删除.html,但在您的示例中,您还附加了一个您在要求中实际上没有提及的斜杠? “它想从我页面上的每个 .html 文件中删除 .html。” - 虽然这不是你应该在.htaccess中做的事情。您需要先删除页面上实际链接中的.html。然后,您使用.htaccess再次在内部重写 URL。 -
“我使用这个工具来测试我的 .htaccess 文件” - 您需要在真实服务器上测试您的规则。不幸的是,那个工具搞错了。它没有正确处理“链式”规则,也没有提醒您注意重定向循环。您发布的规则会导致到
http://www.example.com/whatever//的无限重定向循环。 -
你说得对,我不是
.htaccess专家。这就是我需要帮助的原因。我对https有一些问题,所以我想重定向到http。但是当我想到它时,它没有任何意义。无论如何,我在添加www.和删除.html时仍然遇到问题,因为当您像这样添加www.时:RewriteCond %{HTTP_HOST} ^example\.com$RewriteRule ^$ http://www.example.com/$1它就像重定向一样,我无法删除.html -
啊,在这种情况下,您根本不想删除
.html扩展名!实际上,您想做完全相反的事情...接受不带扩展名的请求并将请求重定向到规范 URL(with 扩展名)。您最初描述问题的方式以及示例代码,看起来您想从您的 URL 中删除.html扩展名,以使它们看起来“漂亮”。
标签: .htaccess http redirect mod-rewrite url-rewriting