htaccess重写只获取文件名

时间:2014-01-13 10:15:27

标签: regex apache .htaccess mod-rewrite

基本上我试图通过仅从某些目录(SEF格式,因此没有.php或.html)获取文件名来重写,然后重写它们。

例如,我想更改以下所有(和其他类似的)目录

index.php/dir1/dir2/filename
index.php/dir1/filename
index.php/dir1/dir4/dir5/filename

然后回来

index.php/filename

显然文件名在每种情况下都不同,并且有很多不同的目录组合,所以我更喜欢通配符,所以所有以dir1开头的目录都将被删除。

我对htaccess很新,虽然我可以为每个不同的目录结构编写一个规则,但是我的htaccess文件中有很多它变得拥挤。当然有一个我可以使用的通配符,它​​将简单地删除所有以dir1开头的目录结构并保留文件名?

非常感谢!

1 个答案:

答案 0 :(得分:0)

将此代码放入DOCUMENT_ROOT/.htaccess文件中:

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+(index\.php)/dir1.*?/([^\s/?]+)\s [NC]
RewriteRule ^ /%1/%2 [L,R=302]