2012-08-06 75 views
0

在閱讀無數個答案時,我似乎無法找到有效的工具。該任務非常簡單:從REQUEST_URI中刪除/fldr/subfldr/,同時仍然總是重定向到index.php。 fldr和subfldr是真實的目錄,而後面的所有內容都不存在。 .htaccess和index.php位於subfldr中。.htaccess在REQUEST_URI中刪除文件夾路徑

目前的.htaccess:

RewriteEngine On 

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^.*$ index.php [PT,L] 

與其他的RewriteRules我已經試過:

RewriteRule ^(.*) index.php/$1 [PT,L] 
RewriteRule ^/fldr/subfldr/?.*$ index.php [PT,L] 

我甚至嘗試了添加文件夾到RewriteBase。每個版本都將完全相同的內容傳遞給請求。

+0

你有沒有考慮將瀏覽器重定向到一個刪除'/ fldr/subfldr /'位的URL?然後,請求會在沒有它的情況下到達服務器。 – 2012-08-06 01:20:23

+0

@JonLin這不是指將index.php移動到根目錄嗎?不幸的是這不是一個真正的選擇。 – 2012-08-06 01:26:00

+0

哦,物理/ fldr/subfldr /目錄中的所有內容都是? – 2012-08-06 01:29:47

回答

3

而不是試圖改寫REQUEST_URI環境變量,儘量只傳遞一個「URI」 PARAM或東西劇本,是這樣的:

RewriteEngine On 
RewriteBase /fldr/subfldr/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ index.php?uri=$0 

然後你可以使用$ _GET [「URI」]在index.php中。

+0

非常感謝Linus :) – 2012-08-08 14:38:39

1

試試這個,然後(htaccess文件是在你的/fldr/subfldr/目錄):

RewriteEngine On 

RewriteBase /fldr/subfldr/ 

# pass through if already index.php 
RewriteRule index\.php - [L] 

# Rewrite to index.php 
RewriteRule ^(.*)$ index.php [L] 

應該使它所以這傳遞給index.php文件的REQUEST_URI具有去除路徑的/fldr/subfldr一部分。

+0

可惜沒有做任何事情。這仍然通過/ fldr/subfldr /作爲REQUEST_URI。但.htaccess肯定正在閱讀。 index.php重定向工作完美。 – 2012-08-06 01:47:51