代码之家  ›  专栏  ›  技术社区  ›  ninu

.htaccess与公用文件夹

  •  2
  • ninu  · 技术社区  · 14 年前

    我在本地主机上有一个目录结构,包含以下内容:

    http://localhost/testing/

    测试中存在如下目录结构:

    /testing/public
    /testing/public/index.php
    /testing/public/img
    /testing/public/css
    ..etc for the js and swf directories
    

    .htaccess文件在测试文件夹中,内容如下:

    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /testing/
    
    RewriteRule ^public$ public/ [R,QSA]
    RewriteRule ^public/$ public/index.php?state=public [L,QSA]
    
    RewriteRule ^stackoverflow$ stackoverflow/ [R,QSA]
    RewriteRule ^stackoverflow/$ public/index.php?state=stackoverflow[L,QSA]
    

    我使用的是php,在/testing/public/index.php文件中,我想测试一下$“get['state']是否确实保存了变量。

    当我尝试测试时:

    http://localhost/testing/public

    根本找不到$获取['state'] 但是

    http://localhost/testing/stackoverflow

    确实会呼应出$“get[”state“]等于”stackoverflow“。

    我这里缺什么????为什么我不能在第一个链接中获取state=public?谢谢你的帮助!

    1 回复  |  直到 14 年前
        1
  •  1
  •   Nathan    14 年前

    这在我的系统上很好用,但是我认为通过使用与实际文件系统目录同名的重写规则,您会遇到麻烦。文件系统通常优先。因此,当加载“/testing/public”时,它只加载/testing/public/index.php,而不运行任何规则。

    尝试将规则更改为:

    RewriteRule ^public_$ public_/ [R,QSA]
    RewriteRule ^public_/$ public/index.php?state=public [L,QSA]
    

    导航到“测试/公开”,如果按预期打印出“公开”,那么您将知道这是您的问题。