当请求域别名时,返回主页而不是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

现在问题来了。我还可以输入URL,如:

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

或:

https://www.domainalias.nl/blabla

或任何其他不存在的URL。

这些页面显示了主页,但是,它应该显示一个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]

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

# /subfolder/.htaccess
RewriteEngine Off

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

最新更新