【问题标题】:Drupal redirect to web folderDrupal 重定向到 Web 文件夹
【发布时间】:2021-03-08 20:49:17
【问题描述】:

我正在尝试使用 apache Web 服务器在 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。

现在我正在尝试让我的.htaccess 文件正确地用于/var/www/html/drupal/app 中的我的drupal 应用程序。在/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 正在工作。任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 如果您的网站在 web 目录中,DocumentRoot /var/www/html/drupal 不应该是 DocumentRoot /var/www/html/drupal/web 吗?
  • 有多个站点,这个站点在/var/www/html/drupal/app,还有一个在/var/www/html/drupal/app2,等等。这样配置文档根目录是否正确?
  • "there's multiple sites",你的意思是每个网站都有不同的网址吗?我认为您将为每个人都有一个虚拟主机,每个主机都有不同的文档根

标签: php apache .htaccess drupal drupal-8


【解决方案1】:

我需要将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 的建议工作

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 2014-05-20
      • 2019-03-23
      相关资源
      最近更新 更多