根域和子文件夹中的两个 htaccess 中的 404 问题
Posted
技术标签:
【中文标题】根域和子文件夹中的两个 htaccess 中的 404 问题【英文标题】:404 issue in two htaccess in root domain and subfoler 【发布时间】:2019-03-16 12:29:53 【问题描述】: 我的根域 htaccess: 选项 +FollowSymLinks 重写引擎开启 RewriteBase / 错误文档 404 /404.php RewriteCond %`HTTP_HOST` ^www\.(.*)$ [NC] 重写规则 ^(.*)$ `https://%1/$1` [R=301,L] RewriteCond %HTTPS !on 重写规则 (.*) `https://%HTTP_HOST%REQUEST_URI` [R=301,L] 在我的子文件夹 htaccess 中: 重写引擎开启 RewriteBase / RewriteCond %HTTP_HOST `^(www\.example\.com)?$` RewriteRule ^(.*)$ `https://example.com/subfolder/$1` [R=301,L]我输入example.com/any-wrong-url
,会跳转到404页面,没错。
但是当我输入example.com/subfoler/any-wrong-url
时,它无法重定向到 404 页面。我哪里有问题?
【问题讨论】:
【参考方案1】:在不产生任何冲突或重定向的情况下执行此操作的最佳方法是:
在 RewriteBase 上使用 /subfolder/
而不是 root /
,如下所示:
RewriteBase /subfolder/
将404.php
复制到subfolder
中。
完整的代码如下所示:
RewriteEngine On
RewriteBase /subfolder/
ErrorDocument 404 /404.php
RewriteCond %HTTP_HOST `^(www\.example\.com)?$`
RewriteRule ^(.*)$ `https://example.com/subfolder/$1` [R=301,L]
这应该可行。
【讨论】:
以上是关于根域和子文件夹中的两个 htaccess 中的 404 问题的主要内容,如果未能解决你的问题,请参考以下文章
如何设置DNS,让一个gitlab页面的根域和子域指向同一个地址?
如何在每个都有自己的 GTM 和 GA 容器的根域和子域之间设置跨域跟踪
.NET:从域和子文件夹重定向到新域,保留路径和查询字符串,在 web.config 中使用 httpredirect