mod_rewrite从文件夹到子目录文件

时间:2015-06-05 13:41:41

标签: php apache .htaccess mod-rewrite

这可能是重复的,因为即使在检查了stackoverflow的类似问题列表后也无法找到原始文件。实际上,如果用户输入myipaddress / gt,那么它应该重定向到myipaddress / gt / gt.htm 我尝试了各种mod_rewrites但仍然获得了浏览器中列出的'gt'文件夹内容。我用下面的mod_rewrite给了最后一次尝试。

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteRule ^gt$ gt/gt.htm [NC,L]

但浏览器仍会显示'gt'文件夹的内容。我做错了什么?

2 个答案:

答案 0 :(得分:1)

您可以在 /gt/.htaccess

中使用此规则
Options +FollowSymlinks
RewriteEngine On
RewriteBase /gt/

RewriteRule ^/?$ gt.php [L]

答案 1 :(得分:0)

由于Apache将gt视为目录,因此将其视为目录。但是,这并不会阻止对该特定路径的所有重写。

这是基本过程:

  1. 导航至/gt
  2. Apache将其视为现有目录,从而重定向到/gt/
  3. 您的规则会被忽略,因为它不包含尾部斜杠。
  4. 这就是您仍然可以看到目录列表的原因。

    因此,您应该将规则更改为:

    RewriteRule ^gt/$ gt/gt.php [NC,L]
    

    或者,您可以使用DirectorySlash off并使尾部斜杠可选,如下所示:

    Options +FollowSymlinks
    DirectorySlash off
    
    RewriteEngine On
    RewriteBase /
    RewriteRule ^gt/?$ gt/gt.php [NC,L]
    

    执行上述任一操作后,您可以在单个.htaccess文件中使用多个类似性质的规则。