.htaccess重写规则求助:无法将请求路径片段作为文件名拼接到目标URL
.htaccess重写规则求助:无法将请求路径片段作为文件名拼接到目标URL
嘿,我一眼就看出问题出在哪了——你现在用的%{QUERY_STRING}是用来抓取URL里?后面的查询参数的,但你要的test1234是路径本身的一部分,根本不是查询字符串,所以这个变量自然是空的,最后就生成了/.pdf这种奇怪的URL。
给你改一下规则,把%{QUERY_STRING}换成匹配到的路径内容就行:
RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY} <20231231 RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule ^test1234$ https://example.com/assets/files/$0.pdf [L]
这里的$0代表的是RewriteRule的pattern(也就是^test1234$)匹配到的完整字符串,正好就是你要的test1234,这样就能正确生成https://example.com/assets/files/test1234.pdf了。
如果你以后想支持更多类似的路径(比如访问/abc567也能转到abc567.pdf),可以把pattern改成带分组的形式,用$1来引用分组内容:
RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY} <20231231 RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule ^([a-zA-Z0-9]+)$ https://example.com/assets/files/$1.pdf [L]
另外提醒一下,要确保你的服务器已经开启了mod_rewrite模块,不然这些规则是不会生效的哦。
备注:内容来源于stack exchange,提问作者Omar Abdirahman
相关产品推荐
相关产品推荐

