如何在Apache中配置路由?

时间:2016-10-04 10:42:58

标签: html apache routing

如何隐藏我的.html文件,例如当我访问www.mysite.com时,它会重定向到www.mysite.com/index.html,但它隐藏了/\ index.html,因此它保持为www.mysite .com但实际上是www.mysite.com/index.html。 我真的不知道如何解释,但如果你了解我,请你帮忙,谢谢。

5 个答案:

答案 0 :(得分:3)

  

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

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

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

答案 1 :(得分:3)

请在.htaccess文件中写下以下代码。

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

.html将使用上述代码从您的网址中删除。 假设您的联系我们网页网址为www.mysite.com/contact.html,因此使用上面的代码代替www.mysite.com/contact

答案 2 :(得分:0)

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

DirectoryIndex index.html

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

答案 3 :(得分:0)

此方法不使用apache。它只是重组代码。

您还可以尝试使用为路径创建不同的目录。 例如,对于联系页面,您将在项目的根目录中具有文件夹名称联系人。在该文件夹中,将contact.html作为index.html。 此重组可以帮助您按路径拆分代码。

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

答案 4 :(得分:0)

如果您要求仅在索引页面中编辑客户端的URL文本。您可以使用this answer

中的代码通过HTML文件上的JavaScript替换路径名
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的页面)。