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