2015-11-18 55 views
-1

今天我試圖編寫一個.htaccess文件第一次爲了從url欄刪除.html擴展名以及一些我想做的事情。由於我不熟悉這一切,因此在編碼之前閱讀了幾篇文章。htaccess的錯誤

我結束了以下代碼。我也從所有鏈接中刪除了.html。問題是,當訪問我的域時,我得到以下錯誤。

//The resource you are looking for has been removed, 
//had its name changed, or is temporarily unavailable. 

我的代碼是否正確?

修訂的.htaccess

//Rewrite to www 
Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^example\.com [NC] 
RewriteRule (.*) http://www.example.com/$1 [R=301,L] 

//Remove .html UNTIL NOW THIS IS THE ONLY PART 
//OF THE CODE THAT ACTUALLY WORKS. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.html [NC,L] 

//Caching schema 
<FilesMatch "\.(jpg|png)$"> 
Header set Cache-Control "private, max-age=160704000" 
</FilesMatch> 

//Prevent viewing of .htaccess file 
<Files .htaccess> 
order allow,deny 
deny from all 
</Files> 

在一個單獨的.htaccess

//Prevent directory listings 
Options All -Indexes 

主要誤差 如果我點擊喜歡的鏈接:

<a href="index">Home</a> 

然後我得到同樣的錯誤。

謝謝大家提前。

+1

您的回答成功了嗎? – Legionar

+0

我正在處理它:) – Mdermez

+0

請參閱https://stackoverflow.com/questions/1992183/how-to-hide-the-html-extension-with-apache-mod-rewrite – joksnet

回答

-1

我終於設法解決了一部分問題。對於初學者,我將我的服務器從Windows更改爲Linux。

然後刪除HTML擴展我用的.htaccess代碼(其他的代碼沒有工作,給我一個錯誤消息)

//Remove .html 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^([^\.]+)$ $1.html [NC,L] 

我也是從所有鏈接刪除任何html的實例。 現在它像一個魅力。

0

這是在Apache中原生的,沒有使用mod_rewrite通過使用MultiViews選項。

Documentation狀態:

多視圖的效果如下:如果服務器接收用於/一些/目錄/ foo的,一個請求如果/一些/目錄,使多視圖,和/一些/目錄/ foo不存在,那麼服務器讀取尋找名爲foo。*的文件的目錄,並且有效地僞造一個命名所有這些文件的類型映射,爲它們分配相同的媒體類型和內容編碼,如果客戶已經問過其中一個名字。然後它會根據客戶的要求選擇最佳匹配。

+0

我試着在帖子中建議的代碼但沒有結果。我仍然得到同樣的錯誤。 – Mdermez