我知道如何通过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的最佳方法是什么?