.htaccess - .htaccess 文件中的子域仅适用于索引
问题描述
我在我的 中有一个子域设置.htaccess
,它似乎只适用于默认index.html
页面。我希望它适用于与子域对应的文件夹中的任何页面。为保护隐私而编辑,假设我的域是example.org
. 文件的相关部分如下所示......
#subdomain
RewriteCond %{HTTP_HOST} ^subname\.example\.org$ [OR]
RewriteCond %{HTTP_HOST} ^www\.subname\.example\.org$
# (a few lines added by my hosting company deleted -- see below)
RewriteRule ^/?$ "http\:\/\/example\.org\/subname\/" [R=301,L]
所以上面的结果是,如果我的index.html
“public-html”(根?)中有一个页面,http://example.org
并且在子文件夹中存储了一个不同的页面index.html
(与子域同名),我会得到这个预期的结果,这有效...
浏览至:http://example.org
查看结果http:// example.org/index.html
浏览至:http://subname.example.org
查看结果http:// example.org/subname/index.html
到目前为止很棒。这是我创建域名时所期望的。myfile.html
但是,鉴于文件夹中存储了一个特定文件subname
,我希望这也能工作,但它不会......
浏览至:http://subname.example.org/myfile.html
导致 404 错误。
尽管事实上浏览到http://example.org/subname/myfile.html
工作正常。在这种情况下myfile.html
显示。那么我可以做些什么来修改子域代码以获得我正在寻找的结果?即,无论“ANYFILE”是什么,浏览到http://subname.example.org/ANYFILE
应该和浏览到一样有效。http://example.org/subname/ANYFILE
毕竟,这是我开始设置子域的主要原因之一!
注意:我承认我依靠托管公司的 cPanel 实用程序来创建子域代码,所以我首先向他们的技术支持寻求帮助。长话短说他们没有。也许我所希望的实际上是不可能的?
此外,我从代码中删除的行与我的托管公司在某个时候添加的名为“众所周知/acme-challenge”的东西有关。由于删除它们对我所描述的行为没有影响,因此我将其省略以避免混淆问题。
解决方案
RewriteRule ^/?$ "http\:\/\/example\.org\/subname\/" [R=301,L]
这只会“重定向”文档根目录。要重定向所有 URL,您需要将上面的内容更改为:
RewriteRule (.*) http://example.org/subname/$1 [R=301,L]
$1
反向引用是指在RewriteRule
pattern中捕获的URL 路径,即。(.*)
.
无需对替换字符串中的冒号、斜杠和点进行反斜杠转义(这是 cPanel 的典型特征)。
此外,我从代码中删除的行与我的托管公司在某个时候添加的名为“众所周知/acme-challenge”的东西有关。
当(让我们加密?)SSL 证书自动更新时,可能需要这些行。(虽然上面重定向到“http” - 你没有使用 HTTPS 吗?)
更新:
RewriteCond %{HTTP_HOST} ^subname\.example\.org$ [OR] RewriteCond %{HTTP_HOST} ^www\.subname\.example\.org$
顺便说一句,如果您愿意,这两个条件可以简化为一个条件。例如,上面等价于:
RewriteCond %{HTTP_HOST} ^(www\.)?subname\.example\.org$
推荐阅读
- rclone - 使用 rclone 检查文件是否正确下载
- multiprocessing - grequests 以及多处理池 gevent 错误
- python - 遍历 JSON 对象并将结果存储在 pandas 数据框中
- laravel - 获取属于laravel中特定角色的用户
- reactjs - 我的嵌套元素抛出错误。我究竟做错了什么?
- c++ - 在自定义向量类中重载运算符“[]”
- office-addins - 在 Office Online Server 中旁加载 Microsoft Word 加载项
- reactjs - 在滚动更新状态并刷新 ReactJS 中的组件
- node.js - Node 和 npm 升级后无法运行任何 npm 命令
- sql - 如何通过 Golang 中的 sqlx 包正确地将参数传递给 SQL 请求?