2016-10-04 80 views
4

如何隐藏我的.html文件,例如,当我访问www.mysite.com时,它会重定向到www.mysite.com/index.html,但会隐藏/\index.html,因此它保持为www.mysite。但实际上是www.mysite.com/index.html。 我真的不知道如何解释,但如果你明白我可以请你帮忙,谢谢。如何在Apache中配置路由?

+0

您想从所有网址中移除.html。让我们联系我们的网页应该是www.mysite.com/contact而不是www.mysite.com/contact.html? –

+0

这不是一个真正的javascript问题。关注apache的URL重写。 –

+0

@RahulPatel是的,这是正确的,我会怎么做? – meme

回答

0

试试这个,我们在这里设置目录索引,所以我们不必在每次调用时都提及index.html。并重写每个html没有扩展名。

DirectoryIndex index.html 

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule ^([\w-]+)$ $1.html [L] 
3

安装.htaccess文件是一个简单的ASCII文件,您可以使用文本编辑器(如记事本或TextMate)创建该文件。它提供了一种在每个目录基础上进行配置更改的方法。

RewriteRule ^([^\.]+)$ $1.html [NC,L]

来源 - How to remove .php, .html, .htm extensions with .htaccess

+0

感谢您的帮助:) – meme

3

请填写下面的代码在你的.htaccess文件。

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} \.html$ 
RewriteRule ^(.*)\.html$ $1 [R=301,L] 

使用上述代码将从您的URL中删除.html。 可以说你的联系我们页面的网址是www.mysite.com/contact.html,所以使用上面的代码将代替www.mysite.com/contact

+1

非常感谢,我非常感谢您的帮助:) – meme

+0

我真的很高兴能帮到您。 (y)的 –

0

此方法不使用apache。这只是重构代码。

您还可以尝试使用为路由创建不同的目录。 如联系页面,您将在项目的根目录中拥有文件夹名称联系人。在该文件夹中,将contact.html放置为index.html。 这种重组可以帮助您按照路线分割代码。

链接到联系页面将是www.mysite.com/contact(浏览器将www.mysite.com/contact/index.html)。

0

如果您要求仅在索引页中编辑客户端上的URL文本。你可以通过JavaScript与代码的HTML文件从this answer更换路径:

history.replaceState('data to be passed', 'Title of the page', 'theNameWithoutTheHTML'); 

名称应改为每个页面的每个.js文件,或者你可以使用一个更通用的脚本,并重复使用它:

history.replaceState('data to be passed', 'Title of the page', location.pathname.slice(0, -5)); //This will replace it with the same path, removing the ".html" at the end (take care if the extension is different sized) 

在这种情况下,您将重定向到.html文件,当用户重新加载页面时(因为它会尝试加载没有.html的页面)应该没有任何问题。