背景
我已经改变了一个网站,我管理一个URL结构,需要建立这种变化的查询参数重定向,但保留价值的RewriteCond。使用与WordPress的add_rewrite_rule()
经过一番研究,我想出了一个工作改写:
RewriteCond %{QUERY_STRING} ^model=(.*)
RewriteRule ^(building-automation|lighting-controls)/display.php$ /?pagename=products/details/?SKU=%1 [QSA,L]
这将改变这一点:
[DOMAIN]/building-automation/display.php?model=Product1
成这样:
[DOMAIN]/?pagename=products/details&SKU=Product1
问题
我无法数字了解如何让该规则留在.htaccess文件中。我直接添加它,当我更新永久链接时它会被删除。所以现在我试图用WordPress的add_rewrite_rule()
函数来添加它。
到目前为止的代码
我已经想通了最接近的是这样的:
add_rewrite_rule(
'(building-automation|lighting-controls)/display.php?model=([^/]*)',
'?pagename=products/details&SKU=$2',
'top'
);
,在.htaccess
文件创建这样的:
RewriteRule ^(building-automation|lighting-controls)/display.php?model=([^/]*) /?pagename=products/details&SKU=$2 [QSA,L]
这重写规则不起作用。
问题
有没有办法使用add_rewrite_rule()
实现工作重写规则?或者,有没有不同的RewriteRule,我可以使用它不需要RewriteCond,来实现HTTP查询参数的变化?
我明白你的意思,但我没有一个选项不幸。我从'display.php'中将**重定向到**,因为那是旧的WP前站点上的URL。我们从网页收藏的人那里获得很多点击,而现在谁正在获得404错误。无论如何,我想出了一个解决方法。我必须将我的规则直接添加到.htaccess文件中,因为我不需要'add_rewrite_rules()'来完成。 –
是的,如果你是从一个旧的.php网址引导,那么WordPress无法为你处理重写。 –