我想重定向(使用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]
1条答案
按热度按时间edqdpe6u1#
您的实现过于复杂。使用简单的
RewriteRule
:这也解决了您的实现中的两个问题:在请求的URL和重定向目标中可能会有尾随的内容,这些内容只会引用年份,而不会引用月份和日期。
在中央http服务器的主机配置(实现此类规则的首选位置)或分布式配置文件(“.htaccess”)中,如果该功能已启用且文件位于http主机
DOCUMENT_ROOT
中,则该实现将同样工作。不确定为什么在实现中向重定向目标添加问号。如果这是为了摆脱潜在的查询字符串,那么使用
QSD
标志。