一台服务器上的多个 Zend 框架站点

2023-11-26

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

对于开发,我只有一台服务器,我正在尝试设置站点,以便我可以访问它们,例如 localhost/app1、localhost/app2 等。

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

这是我的虚拟主机文件:

<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,因为它专门处理这个问题。谢谢。


这就是我要做的...

  1. 将应用程序安装在文档根目录之外的任意位置,例如/home/sudol/apps/app1 and /home/sudol/apps/app2。确保您的 Apache 用户可以遍历此路径并读取文件。

  2. 别名public你的目录<VirtualHost> section

    Alias /app1 /home/sudol/apps/app1/public
    Alias /app2 /home/sudol/apps/app2/public
    
  3. 在适当的位置设置您的访问和重写规则<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>
    
  4. 删除.htaccess文件,因为您将不再需要它们

Addendum

确保在应用程序配置中设置唯一的会话名称。您还可以设置特定的 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/"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一台服务器上的多个 Zend 框架站点 的相关文章

随机推荐

  • 通配符子域和静态子域的虚拟主机

    我有一个奇怪的情况 我想要 URLapp1 example com example com and example com全部使用不同的虚拟主机 这就是我所拥有的 不包括example com因为它只会让事情变得更加混乱
  • JNI:无法从回调中的本机方法找到 java 类

    我对 JNI 还很陌生 并且正在努力解决这个问题 我有一个由网络库 alljoyn 调用的 C 回调 在这个回调中 我需要调用Java代码 由于此回调位于另一个线程中 因此我使用以下代码来获取 JNIEnv 指针 jvm是全局指针 JNIE
  • HTML5 canvas ctx.fillText 不会换行吗?

    如果文本包含 n 我似乎无法将文本添加到画布 我的意思是 换行符不显示 工作 ctxPaint fillText s ome n n br thing x y 上面的代码将会绘制 s ome n br thing 在一条线上 这是 fill
  • iPhone:以编程方式使用前置摄像头拍照

    我想通过我的 iPhone 应用程序中的前置摄像头以编程方式拍照 我不希望用户选择图像选择器或与图像选择器进行任何交互 只想拍摄图像并将其保存在文档中 这可能吗 我从你的问题中了解到 AV Foundation 就是你所需要的 看看苹果的这
  • MySQL - 从字符串中搜索确切的单词

    我想从字符串中搜索确切的单词 例如 id Description 1 This is nice pen looking good 2 This is nice pendrive looking good 搜索字符串 pen 我当前的查询 S
  • 是否可以设置更高的轴标签 z 索引?

    在以下代码中 轴的标签隐藏在图形线后面 import numpy as np import matplotlib pyplot as plt X np linspace np pi np pi 256 endpoint True C S n
  • Linq int 到 string

    如何将 和 int 转换为字符串 以下均无效 from s in ctx Services where s Code ToString StartsWith 1 select s from s in ctx Services where C
  • 如何使用SQL查找表中N个连续记录

    我有以下带有示例数据的表定义 在下表中 客户产品和日期是关键字段 Table One Customer Product Date SALE X A 01 01 2010 YES X A 02 01 2010 YES X A 03 01 20
  • 通过带范围的关联保存时丢失属性 (Rails 4.0.0)

    代码 Rails 4 0 0 class Track lt ActiveRecord Base has many artist tracks has many owning artists gt where artist tracks gt
  • 创建“金字塔”矩阵

    假设给定一个具有奇数长度的对称行向量 其中每个元素都小于向量前半部分的下一个元素 并且每个元素都大于后半部分的下一个元素 并且中间元素是最大的 例如 1 2 3 2 1 or 10 20 50 20 10 我想创建一个方阵 其中行向量是它的
  • 有没有办法从大比例图像创建 xxhdpi、xhdpi、hdpi、mdpi 和 ldpi 可绘制对象?

    有没有办法从大尺寸图像自动创建 xxhdpi xhdpi hdpi mdpi 和 ldpi 可绘制对象 例如 假设我有一个 512x512 图像 并且我希望在适当的文件夹中针对 Android 支持的不同屏幕分辨率拥有该图像的不同版本 选项
  • 如何在C#中增加控制台窗口的大小?

    我正在为将在应用程序中实现的一项功能创建一个原型 特别是我正在将集合中的数据显示到控制台窗口 但不幸的是 某些行的跨度比控制台窗口的默认宽度更宽 我做了一点挖掘并发现增加窗口宽度的唯一方法是深入研究 Kernel32 dll 并手动完成 尽
  • 加快 Vagrant 上主机和来宾之间的同步延迟(NFS 同步文件夹)

    我正在使用 vagrant 在本地计算机上运行 wordpress 开发环境 并将 nfs 设置为默认文件共享机制 我在 Mac 上 总体性能非常好 除了一件事 同步延迟 我已经在来宾上设置了 grunt 观察程序来重新编译 css jav
  • UTF-8 编码与 Base-64 编码

    我想对一个文件 可能是图像或任何 pdf 进行编码并将其发送到服务器 我必须遵循哪种类型的编码和解码 服务端和客户端都在我们公司 我们可以在两个地方写逻辑 UTF 8 编码java默认支持 并使用Base 64编码我必须导入外部jar 对于
  • Jupyter 笔记本中的自动完成功能不起作用

    安装Anaconda最新版本后 我尝试了以下步骤 我无法让自动完成功能正常工作 关于我还需要尝试什么的任何建议 步骤1 1 pip安装jupyter contrib nbextensions 2 pip安装jupyter nbextensi
  • 忽略 ASP .NET MVC 中的文件夹

    我有一个现有的 ASP NET MVC 应用程序 我想忽略其中的特定文件夹 我打算在其中放置 PHP 脚本 我尝试按照描述添加忽略路由here但它不起作用 因为我仍然收到标准 ASP NET 配置错误 例如 假设我有这个文件夹结构 root
  • 如何使用 Async/Await 快速进行进度报告?

    我有一个需要 2 个回调的函数 我想将其转换为异步 等待 但我怎样才能在等待的同时不断返回进度呢 我在用https github com yannickl AwaitKit摆脱回调 typealias GetResultCallBack S
  • 使用 GROUP BY 和 Count(*) 进行匿名类型的 LINQ 查询

    我尝试使用 LINQ 查询来确定我拥有的每种特定对象类型的数量 并将这些值记录到匿名类型中 假设我有一些看起来像这样的数据 确实有暴露此属性的对象 但它的工作原理相同 GroupId 1 1 2 2 2 3 我知道如何在 SQL 中格式化我
  • 使用 JeMalloc 查找 Java 应用程序中的本机内存泄漏

    目前我正在尝试解决 Java 内存问题 我的 Java 应用程序不断使用越来越多的内存 最终它被 Linux OOM 杀手杀死 很可能是本地内存泄漏 因为经过检查 使用 VisualVM 的 JVM 的元空间和堆看起来都不错 使用top命令
  • 一台服务器上的多个 Zend 框架站点

    我在设置 httpd conf 或 htaccess 文件以识别一台服务器上的多个 zend 框架站点时遇到问题 对于开发 我只有一台服务器 我正在尝试设置站点 以便我可以访问它们 例如 localhost app1 localhost a