当设置为除普通固定链接之外的任何值时,Apache/Localhost开发设置上的某些固定链接将返回404

时间:2018-02-27 作者:Cactusman07

我正在本地主机上使用Xampp构建一个自定义主题。我已经为这个网站整理好了一切,除了这个permalinks问题。

目前,该网站使用高级自定义字段插件,并且对该插件有一定的依赖性。

当使用普通永久性树脂时,现场效果良好。当我更改为“Post name”permalinks时,站点上的所有页面都返回404个错误,但我设置的自定义帖子类型除外,它的功能与普通页面相同。

我可以恢复到默认主题之一,永久链接开始正常工作,所以我很有信心这是一个主题问题。

当我替换函数时。php文件中有一个空白文件(里面没有php代码),网站加载的样式与预期的不同,但所有链接只是刷新页面,而不是尝试导航到任何页面。

只是为了确认一些事情。。。

Apache中启用了mod\\u rewrite,尽管我也在单独的Microsoft服务器和IIS上设置了该选项,所以我认为这不是问题所在

/* Add custom post type \'Products\' to Tower/NPI Theme */
  add_action(\'init\', \'create_postTypeProducts\', 0 );
  function create_postTypeProducts() {

$labels = array(
  \'name\'                => _x( \'Products\', \'Post Type General Name\', \'Tower-NPI\'),
  \'singular name\'       => _x( \'Product\', \'Singular Name\', \'Tower-NPI\'),
  \'menu_name\'           => _x( \'Products\', \'admin menu\', \'Tower-NPI\'),
  \'name_admin_bar\'      => _x( \'Products\', \'add new on admin bar\', \'Tower-NPI\' ),
  \'all_items\'           => __( \'All Products\', \'Tower-NPI\' ),
  \'view_item\'           => __( \'View Products\', \'Tower-NPI\' ),
  \'add_new_item\'        => _x( \'Add New Product\', \'Tower-NPI\' ),
  \'add_new\'             => _x( \'Add Product\', \'Tower-NPI\' ),
  \'edit_item\'           => __( \'Edit Product\', \'Tower-NPI\' ),
  \'update_item\'         => __( \'Update Product\', \'Tower-NPI\' ),
  \'search_items\'        => __( \'Search for Products\', \'Tower-NPI\' ),
  \'not_found\'           => __( \'Not Found\', \'Tower-NPI\' ),
  \'not_found_in_trash\'  => __( \'Not found in Trash\', \'Tower-NPI\' ),
);

$args = array(
  \'label\'               => __(\'Products\', \'Tower-NPI\'),
  \'description\'         => __(\'A list of products associated with the Tower/NPI Theme.\', \'Tower-NPI\'),
  \'labels\'              => $labels,
  \'supports\'            => array( \'title\', \'editor\', \'excerpt\', \'revisions\', \'author\', \'thumbnail\', \'custom-fields\', \'post-formats\', \'page-attributes\' ),
  \'hierarchical\'        => true,
  \'public\'              => true,
  \'show_ui\'             => true,
  \'show_in_menu\'        => true,
  \'show_in_nav_menus\'   => true,
  \'show_in_admin_bar\'   => true,
  \'menu_position\'       => 21,
  \'menu_icon\'           => \'dashicons-admin-home\',
  \'can_export\'          => true,
  \'has_archive\'         => true,
  \'exclude_from_search\' => false,
  \'publicly_queryable\'  => true,
  \'capability_type\'     => \'post\',
  \'show_in_rest\'        => true,
  \'rest_base\'           => \'products-api\',
  \'rest_controller_class\' => \'WP_REST_Posts_Controller\',
  \'rewrite\'             => array(\'slug\' => \'/\', \'with_front\' => false,)
);
register_post_type(\'Products\', $args );
  }

 /* Flush rewrite rules on theme switch */
  function my_rewrite_flush() {
    create_postTypeProducts();
    flush_rewrite_rules();
}
add_action( \'after_switch_theme\', \'my_rewrite_flush\' );
任何帮助都将不胜感激。

谢谢

2 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

你用于CPT的子弹看起来很奇怪。您应该使用查询监视器插件之类的工具来检查解析请求时使用的重写规则,但您的直觉是,您的CPT slug使所有URL都与之匹配,并且由于帖子的URL没有CPT,因此您会得到404。

如果你真的得到了服务器的404,这意味着你有配置问题,你应该检查你的htaccess规则,确保它们是默认的。

旁注:始终prefix, prefix, prefix 可能最终位于全局范围内的所有内容,如CPT类型名称。

SO网友:Xhynk

my_cpy_init() 切换主题时定义的函数?如果不是的话,可能会引起问题。

您可以尝试将此添加到functions.php 为了看看刷新重写规则是否有帮助,在主题切换挂钩之外。

add_action( \'init\', \'flush_on_init\' );
function flush_on_init(){
    flush_rewrite_rules();
}

结束

相关推荐

How to replace permalinks

我已将wordpress项目导出并导入live server。现在的问题是,我将permalink结构作为“localhost”格式。当我单击网站中的任何链接时,它会将我重定向到localhost。我怎样才能改变这一点?我的htaccess文件如下所示<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /myproject/ RewriteRule ^index\\.php$ - [L] RewriteCo

当设置为除普通固定链接之外的任何值时,Apache/Localhost开发设置上的某些固定链接将返回404 - 小码农CODE - 行之有效找到问题解决它

当设置为除普通固定链接之外的任何值时,Apache/Localhost开发设置上的某些固定链接将返回404

时间:2018-02-27 作者:Cactusman07

我正在本地主机上使用Xampp构建一个自定义主题。我已经为这个网站整理好了一切,除了这个permalinks问题。

目前,该网站使用高级自定义字段插件,并且对该插件有一定的依赖性。

当使用普通永久性树脂时,现场效果良好。当我更改为“Post name”permalinks时,站点上的所有页面都返回404个错误,但我设置的自定义帖子类型除外,它的功能与普通页面相同。

我可以恢复到默认主题之一,永久链接开始正常工作,所以我很有信心这是一个主题问题。

当我替换函数时。php文件中有一个空白文件(里面没有php代码),网站加载的样式与预期的不同,但所有链接只是刷新页面,而不是尝试导航到任何页面。

只是为了确认一些事情。。。

Apache中启用了mod\\u rewrite,尽管我也在单独的Microsoft服务器和IIS上设置了该选项,所以我认为这不是问题所在

/* Add custom post type \'Products\' to Tower/NPI Theme */
  add_action(\'init\', \'create_postTypeProducts\', 0 );
  function create_postTypeProducts() {

$labels = array(
  \'name\'                => _x( \'Products\', \'Post Type General Name\', \'Tower-NPI\'),
  \'singular name\'       => _x( \'Product\', \'Singular Name\', \'Tower-NPI\'),
  \'menu_name\'           => _x( \'Products\', \'admin menu\', \'Tower-NPI\'),
  \'name_admin_bar\'      => _x( \'Products\', \'add new on admin bar\', \'Tower-NPI\' ),
  \'all_items\'           => __( \'All Products\', \'Tower-NPI\' ),
  \'view_item\'           => __( \'View Products\', \'Tower-NPI\' ),
  \'add_new_item\'        => _x( \'Add New Product\', \'Tower-NPI\' ),
  \'add_new\'             => _x( \'Add Product\', \'Tower-NPI\' ),
  \'edit_item\'           => __( \'Edit Product\', \'Tower-NPI\' ),
  \'update_item\'         => __( \'Update Product\', \'Tower-NPI\' ),
  \'search_items\'        => __( \'Search for Products\', \'Tower-NPI\' ),
  \'not_found\'           => __( \'Not Found\', \'Tower-NPI\' ),
  \'not_found_in_trash\'  => __( \'Not found in Trash\', \'Tower-NPI\' ),
);

$args = array(
  \'label\'               => __(\'Products\', \'Tower-NPI\'),
  \'description\'         => __(\'A list of products associated with the Tower/NPI Theme.\', \'Tower-NPI\'),
  \'labels\'              => $labels,
  \'supports\'            => array( \'title\', \'editor\', \'excerpt\', \'revisions\', \'author\', \'thumbnail\', \'custom-fields\', \'post-formats\', \'page-attributes\' ),
  \'hierarchical\'        => true,
  \'public\'              => true,
  \'show_ui\'             => true,
  \'show_in_menu\'        => true,
  \'show_in_nav_menus\'   => true,
  \'show_in_admin_bar\'   => true,
  \'menu_position\'       => 21,
  \'menu_icon\'           => \'dashicons-admin-home\',
  \'can_export\'          => true,
  \'has_archive\'         => true,
  \'exclude_from_search\' => false,
  \'publicly_queryable\'  => true,
  \'capability_type\'     => \'post\',
  \'show_in_rest\'        => true,
  \'rest_base\'           => \'products-api\',
  \'rest_controller_class\' => \'WP_REST_Posts_Controller\',
  \'rewrite\'             => array(\'slug\' => \'/\', \'with_front\' => false,)
);
register_post_type(\'Products\', $args );
  }

 /* Flush rewrite rules on theme switch */
  function my_rewrite_flush() {
    create_postTypeProducts();
    flush_rewrite_rules();
}
add_action( \'after_switch_theme\', \'my_rewrite_flush\' );
任何帮助都将不胜感激。

谢谢

2 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

你用于CPT的子弹看起来很奇怪。您应该使用查询监视器插件之类的工具来检查解析请求时使用的重写规则,但您的直觉是,您的CPT slug使所有URL都与之匹配,并且由于帖子的URL没有CPT,因此您会得到404。

如果你真的得到了服务器的404,这意味着你有配置问题,你应该检查你的htaccess规则,确保它们是默认的。

旁注:始终prefix, prefix, prefix 可能最终位于全局范围内的所有内容,如CPT类型名称。

SO网友:Xhynk

my_cpy_init() 切换主题时定义的函数?如果不是的话,可能会引起问题。

您可以尝试将此添加到functions.php 为了看看刷新重写规则是否有帮助,在主题切换挂钩之外。

add_action( \'init\', \'flush_on_init\' );
function flush_on_init(){
    flush_rewrite_rules();
}

相关推荐

Permalinks - Archives

WordPress文档说:WordPress offers you the ability to create a custom URL structure for your permalinks and archives. https://codex.wordpress.org/Settings_Permalinks_Screen 我看到此屏幕将如何为特定帖子/页面创建永久链接,但我没有看到此设置屏幕上关于如何为存档帖子/页面创建链接的任何其他详细信息。有人能澄清一下吗?