如何从 URL 中删除 .html?

新手上路,请多包涵

如何从静态页面的 URL 中删除 .html

另外,我需要将任何带有 .html 的 url 重定向到没有它的 url。 (即 www.example.com/page.htmlwww.example.com/page )。

原文由 Dave 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 353
2 个回答

感谢您的回复。我已经解决了我的问题。假设我的页面位于 http://www.yoursite.com/html 下,以下 .htaccess 规则适用。

 <IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /html/(.*).html\ HTTP/
   RewriteRule .* http://localhost/html/%1 [R=301,L]

   RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /html/(.*)\ HTTP/
   RewriteRule .* %1.html [L]
</IfModule>

原文由 Dave 发布,翻译遵循 CC BY-SA 3.0 许可协议

我认为对 Jon 的回答 做出一些解释是有建设性的。以下:

 RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

检查指定的文件或目录是否分别不存在,然后重写规则继续:

 RewriteRule ^(.*)\.html$ /$1 [L,R=301]

但是,这是什么意思?它使用 正则表达式(regular expressions) 。这是我之前做的一些小东西…… 在此处输入图像描述

认为 这是正确的。

注意:测试您的 .htaccess 时不要 使用 301 重定向。使用 302 直到完成测试,因为浏览器将缓存 301s。请参阅 https://stackoverflow.com/a/9204355/3217306

更新: 我有点误会, . 匹配除换行符以外的所有字符,因此包括空格。此外, 这是一个有用的正则表达式备忘单

资料来源:

http://community.sitepoint.com/t/what-does-this-mean-rewritecond-request-filename-fd/2034/2

https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules

原文由 binaryfunt 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏