【问题标题】:using .htaccess to append .html behind url path使用 .htaccess 在 url 路径后面附加 .html
【发布时间】:2011-12-06 18:29:46
【问题描述】:

人们是这样进入我的网站的:

sitename.com/brands/brandA

但这会导致 404 错误,因为我实际上需要他们来这个网址

sitename.com/brands/brandA.html

当有人使用.htaccess 文档输入sitename.com/brands/* 而没有.html 扩展名时,我如何在需要时自动附加.html 扩展名。

【问题讨论】:

  • 另外,如果除了使用 .htaccess 文档还有其他方法可以解决此问题,请随时与我分享。

标签: html .htaccess url url-rewriting


【解决方案1】:

你为什么不试试这个。

RewriteEngine On
RewriteRule ^/brands/(.*)$ /brands/$1.html [L]

【讨论】:

  • 这就是 mod_rewrite 教科书的解决方案。小更正:它是$1 而不是$2
  • 谢谢,这意味着我没有发疯,我已经尝试过这个解决方案,但它没有重写任何东西,而 .htaccess 文档中的其他条目正在工作。关于它为什么不起作用的任何想法?
  • 如果.htaccess 中有其他条目,那么我们必须检查所有规则的顺序。是否可以共享完整的 .htaccess 文件?
  • 抱歉回复晚了,确实是所有规则的顺序,url已经被之前的规则卡住了。
【解决方案2】:

您也可以为此使用mod_negotiation

<IfModule mod_negotiation.c>
  Options +MultiViews
</IfModule>

如果有请求进入,这将导致 404,mod_negotiation 会考虑其他标头,例如 Accept,并查找具有相同基本名称但具有适当扩展名的文件。

【讨论】:

  • PS:如果您在ServerFault.com 上发布这样的问题,您可能会有更好的机会。
  • 我在这里发布它是因为它仍然与编程相关,所以我想这两个网站都可以。 (如果我错了,请纠正我)
  • 不,我很好。只是说,如果您的问题中出现“Apache”这个词,专家可能会坐在别处。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-10
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
相关资源
最近更新 更多