Drupal重定向至Web文件夹

2022-08-17 00:00:00 php drupal-8 .htaccess apache drupal

我正在尝试使用ApacheWeb服务器在Drupal站点上配置重定向。我正在尝试实现此https://www.symphonythemes.com/drupal-blog/remove-web-part-composer-based-drupal-site,但似乎无法使其正常工作。我在/var/www/html/drupal中运行了几个Drupal站点。我的httpd.conf文件中的Drupal配置是

- name: create drupal httpd conf
    copy:
      content: |
               <VirtualHost *:80>
                 ServerName qsd
                 DocumentRoot /var/www/html/drupal
                 <Directory />
                    Options FollowSymlinks
                    AllowOverride All
                 </Directory>
               </VirtualHost>
      dest: /etc/httpd/conf.d/drupal.conf

- name: allow override /var/www/html
    copy:
      content: |
                <Directory "/var/www/html">
                  Options Indexes FollowSymLinks
                  AllowOverride All
                  Require all granted
                </Directory>
      dest: /etc/httpd/conf.d/app.conf

我已添加

if ( isset($GLOBALS['request']) && '/web/index.php' === $GLOBALS['request']->server->get('SCRIPT_NAME') ) {
    $GLOBALS['request']->server->set('SCRIPT_NAME', '/index.php');
}

转到我的settings.php。

现在,我正在尝试为/var/www/html/drupal/app中的Drupal应用程序纠正我的.htaccess文件。在/var/www/html/drupal/app/.htaccess我有

<IfModule mod_rewrite.c>
RewriteEngine on
# Redirect to the subdirectory because that's where Drupal is installed
RewriteBase /app
RewriteRule (.*) web/$1 [L]
</IfModule>

var/www/html/drupal/app/web/.htaccess我有

RewriteBase /web
当我访问https://example.com/app时,我被重定向到我的OIDC提供商,但redirect_uri缺少/app。当我访问https://example.com/app/user/login时,我得到了一个404,但在添加.htaccess之前https://example.com/app/web/user/login是有效的。如有任何帮助,将不胜感激,谢谢。


解决方案

我在安装Drupal8+时避免篡改服务器设置或编写重定向。我进行的是所谓的"修改安装"。这使我能够中途停止项目启动,告诉Composer在哪里安装Drupal,也就是告诉Composer我的web-root是什么,这样它就不会假设它是‘web/’。

如果你使用的是共享主机,那么你的网络根目录很可能是‘public_html’,如果你没有修改安装,Composer会假定它是‘web/’。所以我会做一个修改后的安装,并告诉Composer不要在‘web’内部安装Drupal,而是在‘public_html’内部安装。

我在一篇博客文章How to install Drupal 9 with Composer on Cpanel上写了这些步骤。这篇文章是关于在cPanel帐户上安装的,但该过程演示了进行修改的安装,并且相同的原理可以用于本地安装或在任何文件夹结构中安装。

相关文章