2012-04-02 130 views
0

是否可以向不包含文件擴展名的url添加.html。因此,例如通過htaccess添加文件擴展名

mydomain.com/somepage 將直接向 mydomain.com/somepage.html

我用下面卻得到一個內部服務器錯誤嘗試。

RewriteEngine On 
RewriteBase/
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^(.*)$ $1.html [NC,L] 

感謝

+0

日誌說...? – 2012-04-02 08:58:48

+0

[Mon Apr 02 10:16:52 2012] [error] [client 127.0.0.1] mod_rewrite:達到的最大內部重定向數目。假設配置錯誤。如果需要,使用'RewriteOptions MaxRedirects'來增加限制。 – Ben 2012-04-02 09:17:46

+0

FURL正在網站上運行,所以不知道這是否會導致差異?我已經確認這是在任何FURL代碼 – Ben 2012-04-02 09:18:49

回答

1
RewriteEngine On 
RewriteBase/

# add .html file extension 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.+)$ $1.html [L] 

如果與擴展名爲.html這樣的文件確實存在,它只會重寫(安全改寫 - 將解決你的問題「達成內部重定向的最大數量」)。換句話說:如果​​被請求並且/about.html存在,那麼它將被重寫。另一方面,如果請求/yeahbaby,但沒有/yeahbaby.html文件存在,則不會發生任何事情(404處理程序應該啓動..或任何其他可能存在的規則)。

+0

之前嘿謝謝你的答覆。我沒有得到錯誤,但它並沒有實際重寫 – Ben 2012-04-02 09:55:20

+0

在這裏完美的工作(在Windows上的Apache 2.2.xx)..並在其他類似(如果不相同)問題上工作得很好(搜索「如何添加.php擴展「或類似的東西)。如果它不起作用,則需要更多細節 - 您對Apache有多少控制權?你可以啓用重寫調試http://httpd.apache.org/docs/current/mod/mod_rewrite.html#logging? – LazyOne 2012-04-02 10:05:25

相關問題