2012-10-11 106 views
0

我沒有使用.htaccess的經驗,但我得到了一個非常有用的提示,所以我想試試這個。我需要呼叫.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頁面中調用它?我如何要求它?

回答

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] 

這應該使每一個以斜線結尾的網址(如組合/)使用而不是一個.html文件(portfolio.html ),但僅限於/ portfolio /不是您網站上的實際目錄。

(我從規則,因爲這種方式也應該工作,如果你使用它在其他網站,或者如果你改變你的網址刪除您的網址,它還是應該做你想要的)

2

.htaccess文件由服務器自動調用。

你剛纔把這個文件中加入:

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

'www.mysite.com/portfolio /'不是URI –

0

確定服務器被配置爲允許htaccess文件覆蓋主機選項。因此,在您的虛擬主機/服務器配置中,您需要:

AllowOverride All