2014-12-02 85 views
0

我試圖使用.htaccess來獲取頁面名稱。例如,給出如下:使用.htaccess獲取頁面名稱

domain.com/pagename.php 
domain.com/dir/pagename.html 
domain.com/dir/dir/pagename.htm 
domain.com/pagename.php?param=abc 
domain.com/dir/pagename.asp?param=abc 
domain.com/dir/dir/pagename.php?param=abc 

我要隔離pagename,但仍保留原來的URL是什麼。我想用一個參數filename=$1。因此(分別)輸出所有的這個傳遞給PHP上面會:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.+)\.(.+) $1/$2.$3?filename=$2 [QSA] 

domain.com/pagename.php?filename=pagename 
domain.com/dir/pagename.html?filename=pagename 
domain.com/dir/dir/pagename.htm?filename=pagename 
domain.com/pagename.php?param=abc?filename=pagename 
domain.com/dir/pagename.asp?param=abc?filename=pagename 
domain.com/dir/dir/pagename.php?param=abc?filename=pagename 

我用下面的重寫規則嘗試這種我認爲應該在$ 1中獲取零個或多個目錄,文件名爲$ 2,擴展名爲$ 3。

回答

0

嘗試:

RewriteRule ^([^\/]*\/)?([^\/]*\/)?([a-z]+)\.([a-z]{3,4}) $1$2$3.$4?filename=$3 [QSA] 
0

您可以使用:

RewriteRule ^((?:.+/)*(.+?)\.[a-z0-9]{3,4})$ $1?filename=$2 [NC,QSA,L] 

沒有RewriteCond,因爲他們是真正的文件