2012-05-09 60 views
0

好的我可以讓我以前的問題成爲解決方案,但現在我已經進入了一個障礙。我的網站計劃在很多不同的網頁上有內容,我想知道是否有辦法讓每個.php文件顯示domain.com/filename/顯示一個子目錄而不是文件名.php使.php文件顯示爲地址欄中的子目錄,隱藏實際的文件類型/名稱?

我知道下面使得它如此test.php顯示爲domain.com/test/,但要這樣做,我需要編輯.htaccess我希望顯示爲一個子目錄的每個文件。

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteRule ^test/?$ test.php [L,NC] 

哦,沒有內容是子目錄中(如果他們甚至在服務器上的文件夾存在

回答

1

一些遞歸嘗試無的RewriteCond:

Options +FollowSymLinks -MultiViews 
RewriteEngine On 

RewriteRule (.*\.php)$ $1 [L] 
RewriteRule (.*) $1.php 
0

您可以使用此代碼隱藏PHP擴展:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

# To externally redirect /dir/foo.php to /dir/foo/ 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1/ [R,L] 

# To internally redirect /dir/foo/ to /dir/foo.php 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^(.*?)/?$ $1.php [L] 
0

我假設你在PHP中面向對象編程有一些很好的知識,要實現這樣一個URL,你需要一個調度模式,最適合你的情況是前端控制器。

她e是一類控制器的例子:

class ControllerIndex { 
    public $urlmap = array(
     'welcome' => 'WelcomePage' 
     ); 
} 

隨着前端控制器,所有的請求經過一個全局映射機制,然後委託給一個處理程序。處理程序然後將具有類的形式,而不是文件。

前端控制器提供更有意義/漂亮的網址。你會碰到這樣的http://domain.com/welcome/代替http://domain.com/welcome.php

相關問題