2012-09-04 42 views
8

我正在使用MODX Revolution 2.2.4-pl。我使用提供的.htaccess文件,並打開了友好的URL。這些是我的重寫規則。如何從友好的URL - Modx中刪除.html?

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

他們需要看起來像從網址中刪除.HTML?

我一直在使用googling過去二十分鐘,我的解決方案沒有奏效。 謝謝

回答

23

有一個更容易的內置的方式。登錄到管理器。

鏌鋣革命

的2.2.x及更早版本:轉到System -> Content Types

2.3.x及更高版本:轉至Content -> Content Types

查找HTML並清除「文件擴展名」中寫入的內容。您可以通過雙擊表中的.html來激活可編輯字段。清除內容後,請清除緩存。

鏌鋣演進

轉到Tools -> Configuration -> Friendly URLs

刪除「Friendly URL Suffix」中的內容。保存並清除緩存。

+2

+1這是'MODX方式':比.htaccess解決方案更有效率,允許'直接'訪問資源,而不是通過重寫在每一個請求。 如果現有外部鏈接指向以.html結尾的頁面,那麼使用RewriteRule也是一個好主意。 – okyanet

1

首先,我認爲你需要了解這個.htaccess試圖做什麼。

它試圖將進入站點的所有請求都不是針對實際文件或目錄(即圖像,CSS或其他可能不屬於「主」網站的腳本)的請求重定向到前端控制器位於index.php。

如果你想要做的是在你的網站(而不是前端控制器)上使用一堆* .html文件,但是讓它們使用乾淨的URL,那麼你將需要使用不同類型的重寫。也許更多的東西一樣

RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule ^(.*)$ $1.html [L,QSA] 

此規則將採取的http://domain.com/somepage形式的請求,並將它默默地指向http://domain.com/somepage.html服務請求。

3

這個工作對我來說:

# The Friendly URLs part 
#RewriteCond %{REQUEST_FILENAME} !-f 
#RewriteCond %{REQUEST_FILENAME} !-d 
#RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 


RewriteCond %{REQUEST_URI} \.html$ 
RewriteRule ^(.*)\.html$ $1 [R=301,L] 

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 
#RewriteRule . /index.php [L] 
+0

謝謝你!不勝感激。 – Brant

+0

沒問題! [雖然如果內存服務,我也從堆棧交換問題得到這:) :) –