2010-04-19 74 views
6

我試圖通過爆炸$_SERVER['REQUEST_URI']來完成乾淨的URL,然後在結果之間切換。將所有內容重定向到index.php

但是,一旦用戶出門index.php,我假設我需要將它們重定向到index.php以處理他們想要訪問的URL。我怎樣才能做到這一點?

因此,舉例來說,如果用戶進入www.domain.com/home/johndoe/...我想index.phpdomain.com/index.php)被擊中,以便它可以通過request_uri處理/home/johndoe/

回答

19

的.htaccess:

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?param=$1 [QSA,L] 
+1

@pixel:這是做這件事最常見的方式。如果apache找不到文件或目錄,它將調用call index.php。現在你可以用'$ _GET ['param']'在index.php中訪問請求的URI。注意:在某些設置中'RewriteBase /'可能會導致問題。如果是這樣,只需用英鎊標誌註釋掉。 – webbiedave 2010-04-19 17:01:28

+0

正是我在找的東西。謝謝! – pixel 2010-04-19 17:08:24

2

您可以使用Apache的mod_rewrite基於正則表達式,包括髮送一切index.php URL映射,

+1

從來沒有真正喜歡apache文檔......當你正在尋找一個特定的東西時太羅嗦 – SeanJA 2010-04-19 16:56:53

2

您需要的圖像和其他文件,將出現什麼index.php。

RewriteEngine On 

打開的Rewite引擎

RewriteCond %{REQUEST_FILENAME} !\.(jpg|jpeg|gif|png|css|js|pl|txt)$ 

如果文件名不等於JPG,JPEG ...它需要的index.php

RewriteRule ^(.*)$ index.php?q=$1 [QSA] 

「重定向」 索引。 PHP。

在使用中:

隨着PHP $_GETq會給你/articles/1987/12/20/Répa's birthday/

如果你在每一個分裂變量,

list($type, $date_year, $date_month, $date_day, $title) = split('[/-]', $_GET['q']); 

你將你想要得到什麼斜線。

+0

重寫條件有點過分,如果最終保存沒有文件擴展名的文件(肯定會發生這種情況),會導致事情中斷。 – SeanJA 2010-04-19 21:35:35

相關問題