gpt4 book ai didi

apache - 一台服务器上有多个Zend框架站点

转载 作者:行者123 更新时间:2023-12-04 13:14:39 24 4
gpt4 key购买 nike

我在设置httpd.conf或.htaccess文件时无法识别一台服务器上的多个zend框架站点。

为了进行开发,我只有一台服务器,并且正在尝试设置站点,以便可以访问它们,例如localhost/app1,localhost/app2等。

所以现在,当我转到localhost/app1时,它确实成功重定向到localhost/app1/public/index.php,但是当我转到localhost/app1/index/index时,我得到了404。

这是我的vhosts文件:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "/var/www"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/app1/public">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog logs/error.log
CustomLog logs/access.log common
</VirtualHost>

这是我从/var/www/app1目录中的.htaccess文件:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ /app1/public/index.php [NC,R,L]

如果我将vhosts文件中的DocumentRoot行更改为 DocumentRoot "/var/www/app1/public",则app1可以正常工作,但是我只能在 http://localhost上访问该行。这可能吗?我想发生的是如果/var/www是文档根目录,那么如果我转到localhost/app1,则这些请求需要重定向到localhost/app1/public/index.php,如果我转到localhost/app2,则这些请求需要重定向到localhost/app2/public/index.php。

我希望我能清楚地解释这一点,感谢您的帮助。

最后
我最喜欢Phil的解决方案,因为我不想更改本地主机文件并使用ServerName指令。如果您为每个应用程序拥有一个单独的域名,而不是为开发而拥有一个域名,那么在生产环境中就可以了。

除此之外,使用备用目录来提供Web内容时,我遇到了403禁止的问题。如我所述,烫发似乎是正确的,问题出在SE_Linux,并且文件的安全性上下文未设置为httpd_sys_content_t。我正在发布我发现 here的解决方案,因为它专门处理了该问题。谢谢。

最佳答案

这就是我要做的...

  • 将应用程序安装在任意位置,但不在文档根目录下,例如/home/sudol/apps/app1/home/sudol/apps/app2。确保您的Apache用户可以遍历此路径并读取文件。
  • 别名为public部分中的<VirtualHost>目录
    Alias /app1 /home/sudol/apps/app1/public
    Alias /app2 /home/sudol/apps/app2/public
  • 在相应的<Directory>部分(每个应用程序一个)中设置访问和重写规则,例如
    <Directory "/home/sudol/apps/app1/public">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all

    RewriteEngine On
    RewriteBase /app1
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
    </Directory>
  • 删除.htaccess文件,因为您将不再需要它们

  • 附录

    确保在应用程序配置中设置唯一的 session 名称。您也可以设置特定的cookie路径,但这是可选的,例如
    ; app1/application/configs/application.ini
    resources.session.name = "app1"
    resources.session.cookie_path = "/app1/"

    ; app2/application/configs/application.ini
    resources.session.name = "app2"
    resources.session.cookie_path = "/app2/"

    关于apache - 一台服务器上有多个Zend框架站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7563333/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com