如何更改地址栏中的URL

时间:2015-12-28 18:54:58

标签: javascript jquery html .htaccess

我有静态html文件,我希望能够在地址栏内的网址末尾删除 .html文件扩展名。

因此,我希望它显示为/contact-us.html

而不是/?contact-us

有一点需要注意的是页面名称前面有一个问号。我想对任何html页面执行此操作,而不只是contact-us.html。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

您可以使用以下方法在.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]

答案 1 :(得分:0)

如果您希望能够使用文件夹路径而不是.html,则需要这些规则。

这允许您在地址栏中使用function processForm(e) { jQuery.ajax( { type: 'POST', url: '/ajax/checkbox.php', data: { foton : jQuery(e).val()}, success: function(data) { jQuery('#message').html(data); } }); }

http://domain.com/contact-us

答案 2 :(得分:0)

将此添加到.htaccess文件中:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]