如何在网站URL的末尾创建.html?

时间:2014-02-03 08:07:57

标签: html regex apache .htaccess mod-rewrite

我的网站目前有www.website.com/about.html

但是,如果我在网址中输入www.website.com/about/,则会显示默认的错误404页。

我在某处看过有关编辑htaccess文件的内容,但我不知道该怎么做。

5 个答案:

答案 0 :(得分:2)

只需在htaccess的顶部添加此行即可减少您的网址扩展名:

Options +MultiViews

或者,如果您更喜欢mod_rewrite,请在DOCUMENT_ROOT/.htaccess文件中使用此代码:

RewriteEngine On

# To externally redirect /dir/file.html to /dir/file
RewriteCond %{THE_REQUEST} \s/+(?:index)?(.*?)\.html[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

# To internally forward /dir/file to /dir/file.html
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^(.+?)/?$ /$1.html [L]

答案 1 :(得分:0)

/about/

是目录。在服务器上将调用该目录中的索引。*文件。

直接调用/about.html。或者(更详细地)将一个索引。*(可以是html php)改为/ about /而不是。

答案 2 :(得分:0)

www.website.com/about.html正在审核存储在应用程序根文件夹中的名为about.html的文件。

当您尝试访问www.website.com/about/时,表示您正在尝试访问应用程序中名为“about”的文件夹中的文件。您在解决方案中没有它,并且您收到错误。

所以你访问它的方式是错误的。

请尝试使用以下代码删除.html并访问您尝试访问的文件

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /$1 [L,R=301] 

由于您要从应用程序网址中删除.html,因此无需在导航链接中编写.html,例如,

<a href="http://www.website.com/about">about</a>

答案 3 :(得分:0)

正如anubhava所提到的,您可以在.htaccess文件的顶部添加此行,以减少您的网址扩展: 选项+ MultiViews

但是你仍然需要以

的形式访问它
www.website.com/about

因为

www.website.com/about/

您将转到about目录。希望这可以帮助。

答案 4 :(得分:-1)

您需要在Apache配置文件中进行更改。这个问题已在这里回答: How to remove .html from URL