2014-12-02 60 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,因为他们是真正的文件

相关问题