Drupal 重定向到 Web 文件夹

问题描述 投票:0回答:3

我正在尝试使用 apache Web 服务器在 drupal 站点上配置重定向。我正在尝试实现这个 https://www.symphonythemes.com/drupal-blog/remove-web-part-composer-based-drupal-site 但我似乎无法让它工作。我有几个 drupal 站点在

/var/www/html/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。

现在,我正在尝试为

.htaccess
中的 drupal 应用程序获取正确的
/var/www/html/drupal/app
文件。在
/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 之前正在工作。任何帮助将不胜感激,谢谢。

php apache .htaccess drupal drupal-8
3个回答
0
投票

我需要将

var/www/html/drupal/app/web/.htaccess
更改为

RewriteBase /app/web

和settings.php到

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

但我认为为每个站点创建一个虚拟主机将允许原始配置按照 @2pha 的建议工作


0
投票

在安装 Drupal 8+ 时,我避免篡改服务器设置或编写重定向。我进行了所谓的“修改安装”。这使我能够在中途停止项目启动,告诉 Composer 在哪里安装 Drupal,即告诉 Composer 我的 web 根目录是什么,因此它不会继续假设它是“web/”。

如果您使用共享主机,那么您的 Web 根目录很可能是“public_html”,如果您不进行修改安装,Composer 将假定它是“web/”。所以我会进行修改安装并告诉 Composer 不要将 Drupal 安装在“web”内,而是安装在“public_html”内。

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


0
投票

请按照以下步骤从带或不带www(www.example.com)的子文件夹访问drupal。这是我在 cpanel 中尝试和测试过的。

  • /public_html/ 编辑 .htaccess 并添加以下行:
<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteRule (.*) web/$1 [L]
</IfModule>
  • /web 文件夹我们必须编辑 .htaccess 并更新以下行

RewriteBase /web

  • 在settings.php中请更新以下行

     if ( isset($GLOBALS['request']) && '/web/index.php' === $GLOBALS['request']->server->get('SCRIPT_NAME') ) {
         $GLOBALS['request']->server->set('SCRIPT_NAME', '/index.php'); 
     }
  • 在 cpanel 中,在您的 区域编辑器 中添加 CNAME,以便您的域可以访问 (带或不带 www(www.example.com)
© www.soinside.com 2019 - 2024. All rights reserved.