自定义帖子类型的自定义永久链接

时间:2013-09-11 03:23:39

标签: wordpress .htaccess mod-rewrite

我注册了一个新的自定义帖子类型:

register_post_type('abcd_film',
    array(
        'labels' => array(
            'name' => __( 'Films' ),
            'singular_name' => __( 'Film' )
        ),
        'description'   => 'Manage the Films',
        'supports'      => array( 'title', 'editor', 'custom-fields', ),
        'public'        => true,
        'has_archive'   => true,
        'rewrite'       => array('slug' => 'films'),
    )
);

我的WordPress位于(虚拟链接):

  

www.example.com/folder/wordpress /

我的永久链接设置是(“帖子名称”选项):

  

www.example.com/folder/wordpress/%postname%/

但是,我在自定义帖子类型“Films”下创建了一个新的自定义帖子,帖子名称为“Apple”,链接显示 404 File Not Found 。 WordPress&amp ;; .htaccess文件是可写的。 WordPress编写的当前内容是:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /folder/wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /folder/wordpress/index.php [L]
</IfModule>

# END WordPress

我使用phpinfo()进行了双重检查,mod_rewrite()模块位于“已加载模块”部分。另外,我尝试刷新WordPress Admin > General > Permalink > Save Changes中的永久链接设置。

404 Not Found仍然存在。我还能做什么?

尝试以下方法:

  1. publicly_queryabletrue添加到选项数组(不需要,因为public已设置为true且默认值为{ {1}}等于publicly_queryable

  2. 的值
  3. 将值public with_front添加到true子阵列(*不需要它,因为rewrite的默认值为{{1} })

  4. with_front

  5. 之后添加true

    以上所有尝试均无效。缓存已被禁用&amp;冲洗。

    参考问题:

2 个答案:

答案 0 :(得分:0)

如果您使用Chrome进行测试,则需要确保清空浏览器缓存。使用Chrome菜单清空缓存。这不止一次咬我。我清除缓存,退出Chrome,重新访问该网站。

我也遇到过永久链接保存更改的问题,而不会刷新固定链接表。更改为默认的帖子ID帖子类型,而不是回到正常的帖子类型。

我遇到的另一个问题是我的客户群是一个WordPress主题,它正在增加固定链接规则。如果操作不正确,可能会导致自定义帖子类型出现故障。尝试默认的WordPress主题,如Twenty Thirteen。

如果所有其他方法都失败,请使用干净的WordPress 3.6安装测试网站,添加您的自定义帖子类型和NOTHING其他(没有主题更改或额外的插件)。这将消除所有其他变量,让您专注于服务器和系统规则。但是,似乎你已经排除了这一点。

祝你好运&amp;如果你自己找到它,请记得分享你的答案。

答案 1 :(得分:0)

问题不在于WordPress配置或PHP配置。 .htaccess无效的原因是:在我的Apache虚拟主机设置中,它被配置为忽略.htaccess

AllowOverride None

要禁用此锁定,请将虚拟主机文件(在sites-enabled文件夹中)中的值更改为:

AllowOverride All

然后重新启动 Apache。