我需要打电话给.htaccess吗?

时间:2012-10-11 12:27:23

标签: .htaccess for-loop call

我对.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页面中调用它?我该怎么称呼呢?

3 个答案:

答案 0 :(得分:2)

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

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

RewriteBase /
RewriteEngine on
RewriteRule www.mysite.com/portfolio/ /mysite.com/portfolio.html [L] 

答案 1 :(得分:1)

嗯,你在这里使用了很多规则来达到这个目的。

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

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

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

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

然后,为了使.html消失,您可以添加此规则:

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

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

(我从规则中移除了您的网址,因为这样,如果您在其他网站上使用它,或者如果您更改网址,它也应该有效。它应该仍然按照您的要求执行)

答案 2 :(得分:0)

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

AllowOverride All