我有一个.htaccess文件和几个重定向规则。
例如:
RewriteRule ^blog/migrations/?$ / [R=301,L,NE]
RewriteRule ^blog/digital/?$ / [R=301,L,NE]基本上,我所有的博客url都被删除了,但我发现每个blog url都有重定向规则,可以重定向到主页。但我希望这是一条规则,就像这样:
RewriteRule ^blog/{anyUrl}/?$ / [R=301,L,NE]我也有奇怪的重定向,例如:
RewriteRule ^2/?$ / [R=301,L,NE]
RewriteRule ^3/?$ / [R=301,L,NE]
RewriteRule ^4/?$ / [R=301,L,NE]
RewriteRule ^5/?$ / [R=301,L,NE]
RewriteRule ^6/?$ / [R=301,L,NE]我希望它们成为一条规则,例如:
RewriteRule ^{[2-6]}/?$ / [R=301,L,NE]有人能帮上忙吗,我真的不太擅长正则表达式。
//编辑
此外,我还有一个使用查询字符串重定向urls的规则:
RewriteCond %{QUERY_STRING} .
RewriteRule ^(.*)/?$ /$1 [QSD,R=301,L]但此规则移除所有查询字符串。如何从规则中排除以utm_开头的特定查询字符串
我怎样才能得到域名呢?我的网站在两个不同的领域。例如:
RewriteRule ^posts/? https://{domain}/somewhere发布于 2022-05-31 11:12:23
您可以使用regex交替将所有这些规则组合成一个规则:
RewriteRule ^(blog/|[2-6]/?$) https://%{HTTP_HOST}/ [R=301,L,NC]此模式^(blog/|[2-6]/?$)将匹配起始位置,然后匹配blog/或[2-6],然后匹配可选的/和end位置。
对于其他查询字符串规则,可以使用:
RewriteCond %{QUERY_STRING} .
RewriteCond %{QUERY_STRING} !(^|&)utm_ [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [QSD,R=301,L,NE]RewriteRule ^posts/? https://{domain}/somewhere您不需要在重定向规则中使用https://%{HTTP_HOST}使其与请求中的域相同,因此可以:
RewriteRule ^posts/? https://%{HTTP_HOST}/somewhere [L,R]https://stackoverflow.com/questions/72446721
复制相似问题