我的应用程序在以下变量链接上运行:
www.example.com/topics/vardir/show
www.example.com/education/topics/vardir/vardir/show
www.example.com/literacy/topics/vardir/show
www.example.com/literacy/topics/vardir/vardir/show
我不得不将它们移至子域:
www.subdomain.example.com/topics/vardir/show
www.subdomain.example.com/education/topics/vardir/vardir/show
www.subdomain.example.com/literacy/topics/vardir/show
www.subdomain.example.com/literacy/topics/vardir/vardir/show
www.example.com站点现在是一个 Wordpress 站点,运行 Lightsail Bitnami 。
我想使用重写规则更新www.example.com vhost 文件,以便访问旧链接的人被重定向到新的子域。
我已经有一个适用于变量链接的重写规则,
?elem=icon_file969
最后重定向到子域:
www.domainname.com/education/topics/vardir/vardir/show?elem=icon_file969
RewriteCond %{QUERY_STRING} (^|&)elem=[^&]+(&|$) [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?domainname\.com$ [NC]
RewriteRule ^/?[^/]+/[^/]+/[^/]+/[^/]+/show/?$ https://subdomain.domainname.com%{REQUEST
_URI} [R=301,L,NC,NE]
任何帮助,将不胜感激。
从注释来看,
vardir
是一个变量目录名称,可以包含字母数字字符和下划线。其他路径段是静态的。由于您想要“重定向”(而不是最初所述的“重写”)到请求的相同 URL 路径,那么您可以使用单个规则来完成此操作。例如:
速记字符类与(字母数字混合大小写和下划线)
\w
相同。[a-zA-Z0-9_]
初始请求中的任何查询字符串都会原样传递。
该
RewriteRule
模式是一个更通用的正则表达式,匹配所有需要重定向的 URL 以及更多不需要重定向的 URL。然后,前面的RewriteCond
指令将选择范围缩小到仅应重定向的指令。