2016-03-01 42 views
3

我有這樣的htaccess Dir1中:通完整的文件路徑到PHP即使目錄不存在

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ missingFileHandler.php?location=%{REQUEST_FILENAME} [L] 

當我訪問:

http://example.com/dir1/dir2/dir3/file.txt 

的$ _GET的值「的位置「]是罰款:

/path-to-www/dir1/dir2/dir3/file.txt 

然而,如果一些的DIR1,DIR2或DIR3不存在,我不明白的完整路徑,如參觀時:

http://example.com/dir1/missingdir2/dir3/file.txt 

的$ _GET [ '位置']缺少休息的值:

/path-to-www/dir1/missingdir2 

我怎樣才能在這兩種情況下的完整路徑?

Note:

它並不需要是完整的服務器路徑或完整的URL。 所有我真正感興趣的是這一部分:dir1/dir2/dir3/file.txt

+1

你不能用'%{REQUEST_URI}'的'代替%{REQUEST_FILENAME}'? –

回答

1

您可以使用以下方法:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ missingFileHandler.php?location=$1 [L] 
+1

工作正常,謝謝。你能解釋'^(。+)$'位嗎?我之前嘗試過使用'$ 1',但是我在$ _GET ['location']中得到了一個空字符串。 –

+1

^(。+)$(正則表達式捕獲組)匹配任何不是真實文件和目錄的請求,並將捕獲的值保存爲$ 1。 – starkeen

相關問題