[answer updated as wanted]
最好将函数挂接到generate_rewrite_rules
所以,您不会陷入无限循环中,并在每个请求上刷新重写规则。因此,您可以这样做:
function add_my_rules($wp_rewrite)
{
$new_rules = array(
\'^cityprofile/\\?city=(Sydeny|Melbourne|Brisbane)$\' => $wp_rewrite->preg_index(1) // for 3 cities
);
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action(\'generate_rewrite_rules\', \'add_my_rules\');
然后通过以下步骤重新生成结构
Permalinks structure
节并执行更新。
请注意,这将重定向http://domain.com/cityprofile/?city=Sydney
到http://domain.com/Sydney
但如果你的意思是从第二个URL重定向到第一个URL,我应该说这是不可能的,因为它在URL中没有什么特殊和明确的内容来编写specefic模式,并且会影响所有其他URL。
因此,我的建议是:
通过为添加重写规则,可以使url更具结构性和可理解性http://domain.com/city/Sydney
这就打开了http://domain.com/cityprofile/?city=Sydeny
Update #2
将此规则替换为中以前的规则。htaccess:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(Sydney|Melbourne|Brisbane)$ cityprofile/?city=$1
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress