微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

请求域别名时返回主页而不是 404

如何解决请求域别名时返回主页而不是 404

我有一个主域和一个指向主域的域别名。

使用以下 .htaccess 规则,我将域别名的流量路由到子文件夹:

RewriteCond %{HTTP_HOST} ^(www\.)?domainalias\.nl$ [NC]
RewriteRule !^subfolder/ /subfolder%{REQUEST_URI} [L,NC]

这样有效,地址栏中只显示域别名的 URL。

然后我还有一些其他规则,例如:

RewriteRule ^pagina/([^/]*)/([^/]*)\.html$ /subfolder/result.PHP?page=$1&regio=$2 [L]

这也有效并显示如下页面

https://www.domainalias.nl/pagina/socialemedia/drenthe.html

问题来了。我还可以输入以下网址:

https://www.domainalias.nl/pagina/blabla/test/123/socialemedia/drenthe.html

或:

https://www.domainalias.nl/blabla

或任何其他不存在的网址。

这些页面显示主页,但是,它应该显示一个 404 错误页面

可能是由于我将所有内容路由到子文件夹的规则造成的。我怎样才能防止这种情况?

编辑:

对不起各位。我应该发布完整的 .htaccess 文件。你给我指明了正确的方向。主域是 wordpress 网站,因此 .htaccess 还在文件底部包含以下规则:

RewriteRule ^index\.PHP$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.PHP [L]

如果我删除这些,我的域别名将正常工作并显示正确的 404 页面

如何更改这些规则,使其仅适用于主域?

解决方法

主域是一个 Wordpress 网站....

如果我删除这些,我的域别名将正常工作并显示正确的 404 页面。

如何更改这些规则,使其仅适用于主域?

这可以说是 WordPress 网站的问题。 WP 本身应该生成 404,而不是简单地提供主页。

但是,您可以在 WordPress 代码块(前端控制器)之前添加一个例外,以防止在请求域别名时将请求路由到 WordPress,或者仅 请求主域时。

例如,之前 WordPress 代码块:

# Prevent further processing if not the main-domain
RewriteCond %{HTTP_HOST} !^(www\.)?main-domain\.com
RewriteRule ^ - [L]

或者,您可以在 .htaccess 目录中放置一个额外的 /subfolder 文件并简单地禁用重写引擎:

# /subfolder/.htaccess
RewriteEngine Off

这将防止在将请求重写到 .htaccess 后处理根 /subfolder 文件(包括 WordPress 前端控制器)中的其他指令,因为默认情况下不会继承 mod_rewrite 指令。尽管这确实假设在请求(或重写)/subfolder 时不应处理其他指令。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。