Apache www目录中的几个站点。HTC访问问题

Apache www目录中的几个站点。HTC访问问题,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我在www目录中有几个Phalcon应用程序 此结构如下所示: www/ /app1 .htaccess /public .htaccess index.php /app /app2 .htaccess /public .htaccess index.php /app .htaccess在应用程序根目录中: <IfModule m

我在www目录中有几个Phalcon应用程序

此结构如下所示:

www/
  /app1
      .htaccess
      /public
          .htaccess
          index.php
      /app
  /app2
      .htaccess
      /public
          .htaccess
          index.php
      /app
.htaccess在应用程序根目录中:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule  ^$ public/     [L]
    RewriteRule  (.*) public/$1 [L]
</IfModule>
我从Phalcon医生那里得到的。 如果我键入任何相关url,如example.com/app1/page,我将获得正确的页面。 但是我的主页有问题。 浏览器重定向到example.com/app1/public

我需要htaccess的帮助,我花了3个小时寻找解决方案,但没有成功


我无法使用虚拟主机解决此问题。

这可能是由mod_dir造成的。默认情况下,mod_dir会将缺少尾部斜杠的目录的每个请求重定向到包含尾部斜杠的URL。由于mod_dir和mod_rewrite都应用于同一个请求,奇怪的重定向正在发生。大概是这样的:

www/
  /app1
      .htaccess
      /public
          .htaccess
          index.php
      /app
  /app2
      .htaccess
      /public
          .htaccess
          index.php
      /app
  • 请求
    /app1
  • mod_dir看到请求是一个目录,将请求标记为重定向到
    /app1/
  • 请求(现在是
    /app1/
    )通过处理管道继续进行
  • mod_rewrite看到请求并应用重写规则,请求现在是
    /app1/public/
  • 在管道的末尾,请求被重定向,因为它被mod_dir标记
  • /app1/public/
    出现在浏览器的URL位置栏中
  • 为了避免这种情况,您需要关闭mod_dir的
    directorysslash
    指令。不过,这个重定向确实有一些非常重要的事情。原因是,当您请求目录时,即使有索引文件,也可以在不带尾随斜杠的情况下列出目录的内容。所以为了避免这种情况,您需要确保关闭索引

    因此,在文档根目录中的htaccess文件中,您需要如下内容:

    DirectorySlash Off
    Options -Indexes
    

    “但我对主页有问题”——你这是什么意思?您具体需要什么URL?应用程序根目录中的.htaccess是什么意思?@CBroe我得到了我的主页,但服务器请求我example.com/app1/public。“app root中的.htaccess”意味着它位于每个/www/app1/和/www/app2/@CBroe中,我在/www/dir中没有任何.htaccess。再说一次:你说的“但是我的主页有问题”是什么意思,你在浏览器中请求的URL是什么?那么,在这种情况下,
    RewriteRule^$public/[L]
    完全按照您的要求执行…它会将“空”路径的请求重定向到
    public/
    。感谢您的解释,太棒了。但它仍然不起作用:(
    /public/
    在我请求使用
    http://example.com/app1/
    。后面是否有斜杠并不重要。令人惊讶的是,浏览器显示了主页的内容,所以请求进入php。其他页面如
    http://example.com/app1/page
    一切正常,
    /public/
    不会出现,php可以工作。