2012-06-23 101 views
0

我想創建一堆文件,而不會在最後顯示擴展名。要做到這一點,最簡單的方法是做到這一點:htaccess - 創建相同名稱的目錄和文件

/usa/index.php 
/usa/alaska/index.php 
/usa/alabama/index.php 
/usa/california/index.php 

我想要做的就是這個

/usa/alaska.php 
/usa/alabama.php 
/usa/california.php 

,並將它顯示爲:

/usa/alaska 
/usa/alabama 
/usa/california 

不過,我有我想再補充一點,城市

/usa/alaska/adak.php 
/usa/alaska/anchorage.php 
/usa/california/los-angles.php 

我不想讓「.php」出現,但是每個狀態都以文件和目錄的形式存在。我想要的是一個提供文件版本的htaccess規則,而不是默認的目錄。我也想剝離.PHP關閉文件的末尾,這樣最後的結果看起來像

/usa 
/usa/alaska (alaska.php) 
/usa/alaska/adak (adak.php) 

我知道我可以通過創建的所有目錄和使用的index.php的每個目錄接近這一點,但然後我會有成千上萬的目錄,每個目錄中有一個文件,更新是一個痛苦的屁股。我寧願擁有一個包含1000個文件的目錄,而不是1000個包含1個文件的目錄。

請問,有人能指出我正確的方向,並知道我爲所有50個州做這件事。

吉姆

+0

你真的需要爲每個國家單獨'php'文件和每個城市的狀態? – Havelock

回答

0

什麼有關創建只是一個單一的文件:

/usa/index.php 

隨着

$_SERVER["REQUEST_URI"] 

可以讀取當前URI。 那麼,現在如果用戶輸入「http://domain.foo/usa/alaska」,他將會得到一個404錯誤。 但打電話給你,而不是index.php,你可以寫這行來.htaccess

ErrorDocument 404 /usa/index.php 

現在index.php收到什麼被寫入到URI一切,你可以匹配的結果,包括文件或處理錯誤。

但也許有一個更好的解決方案,只有.htaccess,不知道。 :)

+0

我將不得不檢查該解決方案,但我認爲搜索引擎會在標題鏈中看到404,並使下面的每個頁面都失效。 –

+0

但即便如此,它並沒有讓我超越我目前試圖訪問/ usa/alaska(帶擴展名的alaska.php文件)的問題,而讓web服務器顯示/ usa/alaska /的目錄。 –

1

我也建議使用單個php(例如index.php)文件並將所有以usa開頭的網址重定向到它,而不是將它們分隔在不同的目錄和文件中。在你需要一對夫婦的重寫規則類似於下面的

RewriteEngine On 
RewriteRule ^usa/([^/.]+)$ index.php?state=$1 [L] 
RewriteRule ^usa/([^/]+)/([^/.]+)$ index.php?state=$1&city=$2 [L] 

這樣,就要在你的index.php你只需要檢查$_GET參數。

更新:
如果你不覺得有足夠的舒適的使用數據庫,並從那裏拉所需要的數據,你總是可以使用的參數包括動態/要求所需的文件。這樣

<?php 
    $source = ''; //or the 'ROOT' directory 
    if(isset($_GET['state'])) $source .= $_GET['state'].'/'; 
    if(isset($_GET['city'])) $source .= $_GET['city'].'.php'; 
    include($source); // here $source would be something like 'alaska/adak.php' 
         // and is assumed that the dir 'alaska' is on the same 
         // level as 'index.php' 
?> 

可是,我來回答你的原來的問題不過你可以使用下面的.htaccess

RewriteEngine On 
RewriteRule ^usa/([^/.]+)$ usa/$1.php [L] 
RewriteRule ^usa/([^/]+)/([^/.]+)$ usa/$1/$2.php [L] 
+0

Havelock,這意味着我將不得不上傳我的數據庫並動態創建我的頁面。我不確定我是否具備PHP這方面的技能。我更容易創建一個包含所有變量的單個php文件並將其存儲在計算機上。 –

+0

@JimCubbageJr這將是一種可能性。另一個是基於'state'和'city'參數動態地包含(顯示)html/php文件。 – Havelock

+0

@JimCubbageJr我更新了我的答案,現在完全符合您的問題:) – Havelock

相關問題