首页 > 解决方案 > 在子文件夹中运行 Drupal - 停止访问 URL example.com/subfolder/index.php

问题描述

由于有关此站点主机的各种原因,我们在子文件夹“live”中运行 Drupal 7 站点,因此 D7 的路径是 /home/username/public_html/live/

为了让 Drupal 7 站点从子文件夹中加载,我们在 /home/username/public_html 中有下面的 .htaccess,它工作得很好。

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

但是,如果我键入https://website.com/live/index.php,网站的主页会加载,并且位置栏中的 URL 不会屏蔽为https://website.com。以前的不同重写规则的问题导致其他访问者访问了此页面,这导致https://website.com/live/index.php被包含在我们的 Google Analytics 统计信息中。

有没有办法重写 .htaccess 规则以避免https://website.com/live/index.php从现在开始可见?/home/username/public_html/live 中的 .htaccess 是默认的 D7 .htaccess。

标签: apache.htaccessdrupal-7

解决方案


答案是在 /live 文件夹中添加另一个 .htaccess 文件:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s+\/live/index\.php\s+ [NC]
    RewriteRule ^ https://%{HTTP_HOST} [L,R=301]
</IfModule>

推荐阅读