apache - 在子文件夹中运行 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。
解决方案
答案是在 /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>
推荐阅读
- jquery - 带有颜色框的 HTML 颜色选择器
- latex - Markdown 方程对齐
- asp.net-core - 如何使用 Asp.Net Core Identity 为多个位置/站点扩展角色
- swift - 以速度旋转 scnnode
- javascript - 使用 JavaScript 在没有按钮的表单中添加两个数字(在 cshtml MVC 中)
- asp.net-web-api2 - JobStorage.Current 属性值尚未初始化
- javascript - 如果使用 then ,是否需要在 promise 中嵌套 catch?
- python-3.x - Python udp socket 发送阻塞时间过长
- android - 使用 Android 数据绑定时禁用 Kotlin 合成绑定
- node.js - chai 如何使用期望显示测试失败?