2012-07-25 44 views
1

我知道它試圖加載.html版本,至少我很確定。我也認爲這是在.htaccess文件中的東西。我嘗試了一些搜索谷歌的不同的東西,並提出了一些建議。基本上我希望它的工作,如果沒有輸入名稱的.html文件,它會去的PHP一個。如何製作example.com/eat load example.com/eat.php?

這可能嗎?

+1

您正在尋找URL重寫(非常靈活)或設置默認頁面(指定Web服務器嘗試查找頁面的順序)。如果你谷歌這些條款,你會發現幫助,如:http://www.cyberdesignz.com/blog/website-design/url-rewriting-top-5-ways-of-php-url-rewriting/ – 2012-07-25 02:58:27

回答

1

在htaccess的

RewriteEngine on 
RewriteRule ^eat$ eat.php [L] 
1

使用MultiViews

此添加到apache配置(無論是在httpd.confVirtualHost配置,或在.htaccess):

Options +MultiViews 

使用重寫,這是一矯枉過正,當content-negotiation可以完成這項工作。

+0

我我使用godaddy進行託管,是否有辦法通過它們更改我的apache配置? – 2012-07-25 03:35:18

+0

你可以在'.htaccess'(它是每個dir的apache配置)中設置這個 – poncha 2012-07-25 03:36:08

+0

我有你的代碼在我的.htaccess文件中..並且我得到一個頁面未被發現的錯誤。嘗試在這裏:staging.easyzag.com/eat(嘗試.php版本,看看它在那裏) – 2012-07-25 03:56:12

2

試試這個:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -s 
RewriteRule ^.*$ %{REQUEST_URI}.php [L,QSA] 

上述規則說,如果請求的文件大小爲0,或者不存在的文件,符號鏈接或目錄同名的一個文件擴展名存在.php,然後重寫爲.php文件。

這有效地將site.com/foo重寫爲site.com/foo.php,其中foo可以是任何東西。

我不是很清楚你想要什麼。如果要映射不存在的.html文件到.php擴展,試試這個來代替:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)\.html$ $1.php [L,QSA] 

如果請求的文件不存在,並在.html結束,然後抓住文件名(.html少這只是說: )並嘗試重寫爲.php擴展名。

+0

這些工作也將在所有目錄?像將site.com/foo/bar也去site.com/foo/bar.php – 2012-07-25 03:16:22

+0

也,我將如何使其工作的子目錄。說,foo.bar/eat - > foo.bar/eat.php – 2012-07-25 03:27:48

+0

'.htaccess'文件被沒有'.htaccess'文件的任何子目錄繼承,所以它應該適用於子文件夾/子域。 – drew010 2012-07-25 03:39:33