如何删除子目录并使用尾部斜杠替换文件扩展名

时间:2014-05-13 07:08:10

标签: .htaccess mod-rewrite

以下是我的目录结构

Root (example.com)/
                   index.htm
                   contact.htm
                   privacy.htm
                   disclaimer.htm
                   cat/
                       play/
                            fun.htm
                       rest/
                            sleep.htm

我设法删除文件扩展名并添加一个尾部斜杠:

RewriteEngine on
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R,L]

但我也希望以这样的方式制作:当人们转到www.example.com/fun/时,他们无需重定向即可访问www.example.com/cat/play/fun.htm,这意味着,在地址栏中它仍会显示www.example.com/fun/

我知道我可以使用直接方法:

RewriteRule ^fun/$ /cat/play/fun.htm [L]
RewriteRule ^sleep/$ /cat/rest/sleep.htm [L]

但我会在这两个子目录中添加更多文件(/ cat / play /和/ cat / rest /),所以我想知道是否有单一的重写规则来执行这些重写文件,而不必为这2个子目录下的100个文件输入100个重写规则。请指教。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

将这些行放在.htaccess

RewriteRule ^fun/?$ play/fun.htm [L]
RewriteRule ^sleep/?$ rest/sleep.htm [L]

它们不能移动到一个规则,因此它们应该与每个URL的单独规则一起使用。