我需要一个规则来添加 .html 扩展名,只要有“不”结尾的斜杠。
一个新客户最近更改了电子商务脚本,新版本以不同的方式处理 SEO,并更改了他们所有 16,000 多个产品链接。这在站点被重新索引之前未被发现,因此我们需要将旧站点重定向到新站点。
所有产品过去都有这样的链接
domain.com/category/productname
但现在
domain.com/category/productname.html
分类链接没变,都是这样
domain.com/category/(带有斜杠)
最佳答案
来自@david-wolever 的答案将所有不以 .html(或根)结尾的内容重定向到具有添加的 .html 扩展名的相同 URL,这意味着它将 .html 扩展名附加到 CSS 和 JavaScripts 文件等内容中,例如它会将/style.css 重定向到/style.css.html 这可能不是您想要的。后面还有空格!可能会导致@greggles 500s 的字符
这会重定向不以点号后跟 3 或 4 个字母数字字符结尾的 URL:
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.[a-zA-Z0-9]{3,4}
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1.html
或者为了更精细的控制,将您不希望 .html 附加到的扩展名列入白名单,例如
RewriteCond %{REQUEST_URI} !\.(html|css|js|less|jpg|png|gif)$
关于.htaccess - 重写规则以添加 .html 扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5745490/