如何在子目录中创建DocumentRoot?

时间:2019-07-12 22:24:02

标签: apache .htaccess virtualhost

我知道如何通过Apache配置文件(特别是在VirtualHost中)更改网站的DocumentRoot。但是,我的问题与您的标准用例略有不同。

当前,我有一个内部站点,该站点利用子目录处理多个项目。例如:

site.dev -> root site
site.dev/img -> image hosting web application
site.dev/paste -> pastebin type web application
etc...

虽然我可以进入httpd.conf文件并简单地添加DocumentRoot并每天调用它,但我不想在根站点级别执行此操作。我想在子目录级别执行此操作。原因是paste中的应用程序是使用composer构建的,并且需要在DocumentRoot目录中的web目录中设置paste

我已经尝试过类似的操作,但是运行httpd -t会给我带来DocumentRoot not allowed here的语法错误。

<Directory /home/admin/web/site.dev/public_html/paste>
  DocumentRoot /home/admin/web/site.dev/public_html/paste/web
</Directory>

我还试图做的是在子目录中放置一个.htaccess文件,以更改DocumentRoot。例如:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^site.dev/paste$ [NC,OR]
RewriteCond %{REQUEST_URI} !/paste/
RewriteRule (.*) paste/$1 [L]

此解决方案只有一半有效。它会在index.php目录中加载paste页面,但是如404错误所示,找不到脚本和CSS之类的资产。

如果可能的话,更改子目录的DocumentRoot的最佳方法是什么?

0 个答案:

没有答案