Htaccess重写到父目录中的PHP文件

Htaccess重写到父目录中的PHP文件,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我使用一个自定义框架,它有许多子应用程序。我想为每个应用程序文件夹分配一个域,但遇到问题 Apache vhosts配置 <VirtualHost *:80> ServerName app1.com DocumentRoot /var/www/framework/public/app1 </VirtualHost> <VirtualHost *:80> ServerName app2.com D

我使用一个自定义框架,它有许多子应用程序。我想为每个应用程序文件夹分配一个域,但遇到问题

Apache vhosts配置

<VirtualHost *:80>
        ServerName app1.com
        DocumentRoot /var/www/framework/public/app1
</VirtualHost>

<VirtualHost *:80>
        ServerName app2.com
        DocumentRoot /var/www/framework/public/app2
</VirtualHost>
/var/www/framework/index.php

<?php
exit('WORKED!');

//Route request
//...

你没有。.htaccess将仅从virtualhost的根文件夹开始读取

您要么需要克隆该文件(除非您使用源代码存储库之类的东西将其作为外部文件拉入),要么将其添加到vhosts配置中。我建议只制作一个“rewrite.conf”文件,并通过vhosts配置通过
include
加载它

虚拟主机配置:

<VirtualHost *:80>
    ServerName app1.com
    DocumentRoot /var/www/framework/public/app1
    Include rewrite.conf
</VirtualHost>
<VirtualHost *:80>
    ServerName app2.com
    DocumentRoot /var/www/framework/public/app2
    Include rewrite.conf
</VirtualHost>
这确实有一些缺点:

  • 每次更改服务器时,都需要重置服务器
  • 如果您有很多重写,您可能希望将其保留在代码级别的某个地方。。。然而,我认为,如果你有一大堆的重写,你可能需要一个不同的解决方案(比如PHP处理程序)

请注意,您也可以直接在.htaccess中执行相同的重写,但如果您要这样做,则级别越低越好

你没有。.htaccess将仅从virtualhost的根文件夹开始读取

您要么需要克隆该文件(除非您使用源代码存储库之类的东西将其作为外部文件拉入),要么将其添加到vhosts配置中。我建议只制作一个“rewrite.conf”文件,并通过vhosts配置通过
include
加载它

虚拟主机配置:

<VirtualHost *:80>
    ServerName app1.com
    DocumentRoot /var/www/framework/public/app1
    Include rewrite.conf
</VirtualHost>
<VirtualHost *:80>
    ServerName app2.com
    DocumentRoot /var/www/framework/public/app2
    Include rewrite.conf
</VirtualHost>
这确实有一些缺点:

  • 每次更改服务器时,都需要重置服务器
  • 如果您有很多重写,您可能希望将其保留在代码级别的某个地方。。。然而,我认为,如果你有一大堆的重写,你可能需要一个不同的解决方案(比如PHP处理程序)

请注意,您也可以直接在.htaccess中执行相同的重写,但如果您要这样做,则级别越低越好

您所做的基本上是一个多站点应用程序

您应该将文档根目录设置为包含主
index.php
文件的文件夹。然后,通过检查中的HTTP主机属性,将请求路由到所需的应用程序,例如:

switch ($_SERVER['HTTP_HOST']) {
    case 'app1.com':
        include 'app1/index.php';
        // Do stuff
        break;

    case 'app2.com':
        include 'app2/index.php';
        // Do stuff
        break;
}

您所做的基本上是一个多站点应用程序

您应该将文档根目录设置为包含主
index.php
文件的文件夹。然后,通过检查中的HTTP主机属性,将请求路由到所需的应用程序,例如:

switch ($_SERVER['HTTP_HOST']) {
    case 'app1.com':
        include 'app1/index.php';
        // Do stuff
        break;

    case 'app2.com':
        include 'app2/index.php';
        // Do stuff
        break;
}

“您需要克隆文件”-或者只使用符号链接。有很多选项,符号链接可以很好地工作。出于可移植性的原因,我不建议将其作为通用解决方案,但这只是因为我不知道有关环境的更多细节。“您需要克隆文件”-或者只使用符号链接。有很多选项,符号链接可以正常工作。出于可移植性的原因,我不推荐它作为一个通用的解决方案,但那只是因为我不知道关于环境的更多细节。