Php 重写URL中包含子域的博客文章的规则

Php 重写URL中包含子域的博客文章的规则,php,wordpress,apache,.htaccess,mod-rewrite,Php,Wordpress,Apache,.htaccess,Mod Rewrite,正在编写重定向规则,但我对它们或语法不太熟悉 基本上,我的Wordpress URL如下所示: https://example.com/blog/blog-title/garbagetext example.com/blog/blog-title 我需要能够像这样将URL重定向到404页面,我的第一次尝试是: RewriteRule ^blog/(.`*)/(.`*)/$ https://www.example.com/404.php [R=301,L] 这是可行的,但它也使得访问实际的博

正在编写重定向规则,但我对它们或语法不太熟悉

基本上,我的Wordpress URL如下所示:

https://example.com/blog/blog-title/garbagetext
example.com/blog/blog-title
我需要能够像这样将URL重定向到404页面,我的第一次尝试是:

RewriteRule ^blog/(.`*)/(.`*)/$ https://www.example.com/404.php [R=301,L]
这是可行的,但它也使得访问实际的博客帖子变得不可能,而且还会重定向如下所示的URL:

https://example.com/blog/blog-title/garbagetext
example.com/blog/blog-title
有没有办法让它正常工作

您发布的指令无法重定向您所说的被错误重定向的示例URL。因此,要么您有其他指令(可能在其他
.htaccess
文件或服务器配置中),要么与现有指令冲突,要么您看到缓存响应?如果您以前尝试过301重定向,那么浏览器会主动缓存这些重定向。(因此,使用302-临时-重定向进行测试会更容易。)

由于您使用的是WordPress(它使用的是前端控制器),因此任何重定向都应该出现在文件的开头,在前端控制器之前

您似乎在
重写规则
模式的末尾有一个错误的斜杠,该斜杠与
/blog/blog title/garbagetext
格式的预期URL不匹配

现在我将忽略背景标记-我想它们可能只是你问题中的一个样式输入错误

我需要能够重定向像这样的网址到我们的404页

你不应该重定向到404页面。应该使用内部子请求来代替它。如果重定向,则首先向客户机发送3xx响应,然后客户机向
404.php
页面发出第二个请求(公开URL),然后您必须确保手动设置适当的404 HTTP响应头

因此,您需要定义相应的
ErrorDocument
R=404
响应

需要重定向到404的帖子是任何在尾部斜杠后面有文本的帖子,例如:
example.com/blog/customer reviews/asdfa

请在
.htaccess
文件的顶部尝试以下操作:

ErrorDocument 404 /404.php

RewriteRule ^blog/.+/. - [R=404]
这将匹配
/blog/customer reviews/asdfa
,但不匹配
/blog/customer reviews/
(或
/blog/customer reviews
)。
R=404
标志触发对已定义错误文档的内部请求。使用none 3xx代码时,不需要使用
L
标志。如果没有替换文本(即,没有目标URL),则指定连字符(
-

并确保已清除浏览器缓存

您发布的指令无法重定向您所说的被错误重定向的示例URL。因此,要么您有其他指令(可能在其他
.htaccess
文件或服务器配置中),要么与现有指令冲突,要么您看到缓存响应?如果您以前尝试过301重定向,那么浏览器会主动缓存这些重定向。(因此,使用302-临时-重定向进行测试会更容易。)

由于您使用的是WordPress(它使用的是前端控制器),因此任何重定向都应该出现在文件的开头,在前端控制器之前

您似乎在
重写规则
模式的末尾有一个错误的斜杠,该斜杠与
/blog/blog title/garbagetext
格式的预期URL不匹配

现在我将忽略背景标记-我想它们可能只是你问题中的一个样式输入错误

我需要能够重定向像这样的网址到我们的404页

你不应该重定向到404页面。应该使用内部子请求来代替它。如果重定向,则首先向客户机发送3xx响应,然后客户机向
404.php
页面发出第二个请求(公开URL),然后您必须确保手动设置适当的404 HTTP响应头

因此,您需要定义相应的
ErrorDocument
R=404
响应

需要重定向到404的帖子是任何在尾部斜杠后面有文本的帖子,例如:
example.com/blog/customer reviews/asdfa

请在
.htaccess
文件的顶部尝试以下操作:

ErrorDocument 404 /404.php

RewriteRule ^blog/.+/. - [R=404]
这将匹配
/blog/customer reviews/asdfa
,但不匹配
/blog/customer reviews/
(或
/blog/customer reviews
)。
R=404
标志触发对已定义错误文档的内部请求。使用none 3xx代码时,不需要使用
L
标志。如果没有替换文本(即,没有目标URL),则指定连字符(
-


并确保已清除浏览器缓存。

您的“实际博客文章”的URL是什么样子的?您发布的规则不应重定向以下格式的URL:
example.com/blog/blog title
。也可能与现有指令冲突-请发布整个
.htaccess
文件,因为指令的顺序很重要。为什么正则表达式中有反勾号,为什么正则表达式以斜杠结尾,而示例URL不以斜杠结尾?您还可以在非www和www URL之间切换-这有意义吗?实际的博客帖子如下所示:需要重定向到404的帖子是任何在尾部斜杠后面有文本的帖子,到目前为止示例:我发布的规则是将两个URL重定向到404,但我只需要一个可以重定向后者的规则。在.htaccess文件中没有先前的规则,这是第一个减去WordPress标准的规则。不,非www之间的切换是偶然的(对不起!)你的“实际博客文章”的URL是什么样子的?这个