代码之家  ›  专栏  ›  技术社区  ›  Sander Versluys

如何将每个请求重写为index.php,除了真正的文件,但不包括一个真正的目录?

  •  2
  • Sander Versluys  · 技术社区  · 16 年前

    让我解释一下我的情况:

    我使用的是一个MVC框架(codeigner),所以每个请求都会被重写到index.php文件中,然后这个文件会把它路由到我的类和函数中。

    如果存在对真实文件的请求,则不应通过脚本进行处理,而是直接从Web服务器发送到浏览器。

    好吧,没问题,下面的重写规则就是这样做的:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
    

    我希望某个文件夹的请求(让我们称之为“private”)仍然由PHP处理。这样做的原因是,然后我将验证用户是否经过身份验证,如果经过身份验证,则将内容发送到浏览器。

    • 房子里有谁能帮忙的阿帕奇大师吗?
    • 这个问题的解决方案可以接受吗?
    1 回复  |  直到 16 年前
        1
  •  5
  •   Gumbo    16 年前

    试试这个规则:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d [OR]
    RewriteCond $1 ^private($|/)
    RewriteRule ^(.*)$ index.php/$1 [L]
    

    这将排除 private 或者从开始 private/ 即使它们是现有的文件夹或文件。

    推荐文章