.htaccess htaccess重定向-如果URL具有日期格式,则修改URL

kcrjzv8t  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(126)

我想重定向(使用htaccess)
https://www.example.com/2023/06/16

https://www.example.com/news/2023/06/16

有成千上万的URL,因为2023可以与过去的任何一年,06可以与任何一个月,16可以与任何一天发生变化,但幸运的是,所有这些都是带有“/”分隔符的数字。

必须非常小心地做这件事,甚至检查一年后URL中是否有两个“/”,因为否则其他类似的URL可能会被卡住。

我写了一个htaccess代码,它的工作正常,但请让我知道,如果有什么是错误的,在这段代码。

RewriteEngine ON
RewriteCond %{THE_REQUEST} \s/+(\d{4})/(\d{2})/(\d{2}) [NC]
RewriteRule (.*) /news/$1? [R=301,L]
edqdpe6u

edqdpe6u1#

您的实现过于复杂。使用简单的RewriteRule

RewriteEngine on
RewriteRule ^/?(\d{4}/\d{2}/\d{2})/?$ /news/$1 [R=301,L]

这也解决了您的实现中的两个问题:在请求的URL和重定向目标中可能会有尾随的内容,这些内容只会引用年份,而不会引用月份和日期。
在中央http服务器的主机配置(实现此类规则的首选位置)或分布式配置文件(“.htaccess”)中,如果该功能已启用且文件位于http主机DOCUMENT_ROOT中,则该实现将同样工作。
不确定为什么在实现中向重定向目标添加问号。如果这是为了摆脱潜在的查询字符串,那么使用QSD标志。

相关问题