URL rewriting not working

时间:2017-10-05 作者:Alex M

我有一个wordpress页面,它接受一个查询参数,并根据该参数自定义页面(通过javascript,wordpress模板总是相同的)。其url如下所示:

example.com/site/city-page?center=mycitycenter
我想将其改写为:

example.com/site/city/mycitycenter
在哪里site 是wordpress实例所在的子目录。

我试着重写如下:

function add_city_query_var ( $query_vars ) {
    $query_vars[] = \'center\';
    return $query_vars;
}

function add_rewrites() {
    add_rewrite_rule(
        \'city/([^/]+)/?$\',
        \'index.php?pagename=city-page&center=$matches[1]\',
        \'top\'
    );
}

add_filter(\'query_vars\', \'add_city_query_var\');
add_action( \'init\', \'add_rewrites\' );
我还尝试了:

add_action( \'generate_rewrite_rules\', \'my_rewrite_rules\' );
function my_rewrite_rules( $wp_rewrite )
{
    $wp_rewrite->rules = array(
        \'city/([^/]+)/?$\' => $wp_rewrite->index . \'?pagename=city-page&center=\' . $wp_rewrite->preg_index( 1 )

    ) + $wp_rewrite->rules;
}
我确保转到永久链接页面并保存永久链接。

我试过via。htaccess:

RewriteRule ^city/([^/]*)$ /site/city-page/?center=$1 [L,QSA,NC]
使用上面的不同位置(wordpress在上面重写,下面重写,在该块中)和标志的组合。

在每种情况下,我都会得到一个wordpress 404页面。

我可以很好地访问目标页面,并且可以进行重定向(通过添加R=301 在中标记.htaccess)

我错过了什么?

P、 我试着把答案贴在URL rewrites and paginationRewrite rule not workingWordpress Rewrite

1 个回复
SO网友:SEO DEVS

只需在htaccess文件中使用此重写规则,它将删除所有查询字符串。

是否重写规则^(.*)/$1?【R=301,L】

要允许遵循更多规则,请改用此选项

是否重写规则^(.*)/$1?【R=301】

像这样删除301

是否重写规则^(.*)/$1?[东北,北]

并为搜索引擎提供正确的url。

如果没有301,您将需要创建一个指向正确url的规范链接。

如果您正在重写用于SEO的URL,那么更好的方法可能是通过将其添加到您的robots txt文件来阻止搜索引擎对带有查询字符串的页面进行爬行。

不允许:/站点/城市页/?*

此规则假定您的站点目录为,例如/site/city页/

希望这有帮助

结束

相关推荐