.htaccess htaccess重定向网址,如果匹配确切的字符串长度?

ki0zmccv  于 2023-02-09  发布在  其他
关注(0)|答案(1)|浏览(98)

我有很多旧的网址入站指向不正确的位置,试图转发到新的位置。这些都要到根目录,所以我不能只是转发一切。
将它们中的一大块放到新位置的一种方法是在查询字符串中找到具有会话ID的块,它总是有32个字符,前面有s =

https://www.example.com/some-url-name-1233/?s=ba4a8a734b666b8d43499e5d497599a6

需要将其移动到(并删除会话ID)

https://www.example.com/newfolder/some-url-name-1233/

我无法使.htaccess重定向与该字符串匹配。
我试过很多方法,最近的是:

RewriteRule ^(.*)s=([^.]{32})$ https://www.example.com/newfolder/$1 [L,R=301]

有什么建议吗?

jbose2ul

jbose2ul1#

这是一个经常回答的、有充分记录的问题:你不能通过RewriteRule访问请求的查询字符串。你需要使用RewriteCond

RewriteEngine on
RewriteCond %{QUERY_STRING} ^s=[^&]{32}[&|$]
RewriteRule ^ https://www.example.com/newfolder%{REQUEST_URI} [L,R=301,QSD]

我还修正了一些其他细节。

相关问题