我有静态 html 文件,我希望能够删除地址栏中网址末尾的 .html
文件扩展名。
因此,我希望它显示为 /?contact-us
,而不是 /contact-us.html
这里需要注意的一件事是页面名称之前有一个问号。我想对任何 html 页面执行此操作,而不仅仅是 contact-us.html
。我怎样才能实现这个目标?
最佳答案
您可以使用以下方法重写 .htaccess 中的单个页面:
RewriteEngine On
RewriteRule ^/contact-us.html$ /?contact-us [NC,L]
更具体地说,如果您想重写所有 .html 扩展名,您可以使用正则表达式来匹配页面模式:
RewriteEngine On
RewriteRule ^(.*)(.html)$ /?$1 [NC,L]
在上面的示例中,它将匹配任何 .html 扩展名。例如/example-page.html 将是/?example-page
您可以在此处的 htaccess 测试器上对其进行测试:http://htaccess.mwl.be/
但是,问号 (?) 是为查询字符串保留的,您的重写可能会陷入无限循环,因为规则将重写 http://www.example.com/example-page.html至 http://www.example.com/?example-page ,服务器将解析为 http://www.example.com/index.html?example-page ,这又会触发另一次重写,无限循环。
更好的方法是模拟目录结构,并将/example-page.html 重写为/example-page/这也为您带来了一些 SEO 好处,并且可以使用此 .htaccess 来完成:
RewriteEngine On
RewriteRule ^(.*)(.html)$ /?$1/ [NC,L]
关于javascript - 如何更改地址栏中的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34499072/