0

我没有使用 .htaccess 的经验,但我得到一个提示,它非常有用,所以我想试试这个。

我现在在我的根文件夹中有一个名为 .htaccess 的文件。文件包含这个;

RewriteBase /

RewriteEngine on
RewriteCond %{HTTP_HOST} ^kellyvuijst\.nl [nc]
RewriteRule (.*) http://www.kellyvuijst.nl/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([^/]+)/$ $1.html 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

我在这里尝试做的是创建一个“www.mysite.com/portfolio/”而不是“mysite.com/portfolio.html”我使用了一些教程,我认为这是正确的,但我不确定.

所以现在我有了这个文件,现在呢?教程都显示了要放入文件中的内容,但没有显示如何处理它?我需要在我拥有的每个 .html 页面中调用它吗?我该如何调用它?

4

3 回答 3

2

服务器会自动调用 .htaccess 文件。

您只需将其放入您的文件中:

RewriteBase /
RewriteEngine on
RewriteRule www.mysite.com/portfolio/ /mysite.com/portfolio.html [L] 
于 2012-10-11T12:32:39.463 回答
1

嗯,你在这里使用了很多规则来实现这一点。

无论如何,不​​,您不必包含该文件。如果您将站点托管在使用 Apache 的服务器上,它将自动包含在内。您还可以运行 PHP 文件还是您的网站只是 HTML?如果您也在使用 Apache(不是 100%,但通常是一起使用),这总是一个简单的迹象。

如果是这样,您可以先尝试使用这些规则:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.(.+)\.(.+)$ [nc]
RewriteRule ^(.*)$ http://www.%1.%2/$1 [R=301,L]

如果这总是将 www 添加到您的地址,即使您输入的 URL 没有 www,至少您可以确定它有效。

然后,要使 .html 消失,您可以添加以下规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule $(.*)/$ /$1.html [L]

这应该使每个以斜杠结尾的 url(如portfolio/)都使用.html 文件(portfolio.html),但前提是/portfolio/ 不是您网站上的实际目录。

(我从规则中删除了你的 url,因为如果你在另一个网站上使用它,或者如果你更改了你的 url,它也应该可以工作。它仍然应该做你想做的事)

于 2012-10-11T12:35:31.040 回答
0

确保服务器配置为允许 htaccess 文件覆盖主机选项。因此,在您的虚拟主机/服务器配置中,您需要:

AllowOverride All
于 2012-10-11T19:01:07.003 回答