我尝试使用.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
,但仍保留原始网址。我想使用参数filename=$1
将其传递给PHP。因此,上述所有内容的输出(分别)将是:
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
我尝试使用以下RewriteRule:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.+)\.(.+) $1/$2.$3?filename=$2 [QSA]
我认为应该在$ 1中获取零个或多个目录,在$ 2中获取文件名,在$ 3中获取扩展名。
答案 0 :(得分:0)
尝试:
RewriteRule ^([^\/]*\/)?([^\/]*\/)?([a-z]+)\.([a-z]{3,4}) $1$2$3.$4?filename=$3 [QSA]
答案 1 :(得分:0)
您可以使用:
RewriteRule ^((?:.+/)*(.+?)\.[a-z0-9]{3,4})$ $1?filename=$2 [NC,QSA,L]
没有RewriteCond
,因为它们是真实的文件