Php 重写URL中包含子域的博客文章的规则
正在编写重定向规则,但我对它们或语法不太熟悉 基本上,我的Wordpress 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] 这是可行的,但它也使得访问实际的博
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是什么样子的?这个