在指向域名后如何使用htaccess在drupal 8安装中从URL跳过Web目录?

时间:2019-02-08 08:30:29

标签: .htaccess redirect drupal-8

我已经安装了drupal网站,并使用ip地址添加了初始配置和页面,例如:http://111.22.33.88/web 我的安装目录如下(我只添加了基本文件以了解其结构)

public_html/
    vendors/
    web/
        core/
        sites/
        modules/
        themes/
        .htaccess
        index.php

一切正常,但是将我的IP地址指向我的域名www.mysite.com之后。仅当我在路径(即www.mysite.com/web

)中添加Web子文件夹时,它才能正常工作

我不需要URL中的 web 文件夹。我发现了一种使用.htaccess文件的解决方案,其代码如下

Options -Indexes
Options +FollowSymLinks 
RewriteEngine on
RewriteRule ^$ web/index.php [L]
RewriteCond %{DOCUMENT_ROOT}/web%{REQUEST_URI} -f
RewriteRule .* web/$0 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* web/index.php?q=$0 [QSA]

我通过在/public_html/.htaccess中创建一个新的htaccess文件添加了上面的代码

站点和管理员链接有效,但是仍然存在一些问题,例如,以管理员身份登录后,www.mysite.com / user / login,网站获得登录,但显示白色错误页面,如下所示 “默认情况下,不允许重定向到外部URL,为此请使用\ Drupal \ Core \ Routing \ TrustedRedirectResponse。”

有人可以帮忙解决此问题吗,我想我错过了我新创建的.htaccess文件中的某些内容或一些其他设置,以消除Web目录

2 个答案:

答案 0 :(得分:0)

您可以通过在settings.php中添加以下内容来消除此问题

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

答案 1 :(得分:0)

我遇到了同样的问题,但是我在没有代码的情况下采取了不同的方法。我的Web主机(动机)可让您提供根文件夹,在我的情况下,我试图将域名指向子文件夹。因此,我将域名指向/ public_html / subfolder / web而不是/ public_html / subfolder。而且有效。