我每天与WordPress的工作,并没有看到过这个问题。也许SO社区有一些洞察力。WordPress的永久链接和重定向
我有一个标准的wordpress安装v4.3,这是当前版本。我没有活动的重写模块。没有设置基本类别或标签。固定链接被设置为“发布名称”为干净的URL,这适用于整个网站除了/博客以外的所有内容
我试图重写/ blog/*到index.php?page_id = xxx并写了一个自定义分析器来处理似乎在本地工作的URI段。然而,在服务器上,所有/ blog/xxx只是重定向到/ blog /即使我没有专门告诉它这样做。
我曾尝试在.htaccess中设置这样的:
RewriteRule blog/(category|tag|page|search)/(.+)/?$ index.php?page_id=123
这不,即使自定义文章类型正则表达式检查出来和所有其他重写规则,我有工作的工作。
当失败我试着写一个重写规则挂钩:
// pathetic hack to fix wp permalink horror for blogs
add_filter('rewrite_rules_array','my_insert_rewrite_rules');
add_action('wp_loaded','my_flush_rules');
// flush_rules() if our rules are not yet included
function my_flush_rules(){
$rules = get_option('rewrite_rules');
if(isset($_GET['rules']))
{
echo '<pre>';
print_r($rules);
echo '</pre>';
}
if (! isset($rules['blog/(category|tag|page|search)/(.+)/?$'])) {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
}
// Adding a new rule
function my_insert_rewrite_rules($rules)
{
$newrules = array();
$newrules['blog/(category|tag|page|search)/(.+)/?$'] = 'index.php?page_id=123';
return $newrules + $rules;
}
在浏览器,如果您运行的规则显示当前重写阵列,它确实将它添加到阵列?然而由于某些原因,WP正在采取的行动是将重定向到index.php?page_id = 123,而不是加载它,让我自己解析URI。就像“博客”这个词在某种程度上是保留的一样。
有没有其他人看过类似的东西?我能想象的唯一相关插件可能会扰乱CCTM,但博客不是自定义内容类型。/blog只是一个普通的页面,像其他任何根据URI段获取帖子的普通页面。
我建议尝试为这些页面使用标准WP体系结构,但客户端坚持一切都在/ blog/category/category_name/page/x下。他们不想为此付出代价,而且我明白,因为它在当地按预期运作。是的,服务器设置有细微的差异,但常见的核心元素是相同的 - htaccess启用,wp是根目录,并没有安装在一个目录等。
我试过禁用所有插件,切换到2015主题,潮流固定链接,清除缓存等等。非常奇怪。
任何输入或类似的故事可能会导致解决方案,所以我欢迎你有什么。