404 error on subsite with URL rewrites
-
Hello,
First, thank you for this plugin. =)
It is working great for the websites on my multisite installation using WordPress’ default permalinks settings, but not on the one for which I’ve defined custom URLs based on type of content… Any idea how I could solve this?
Thank you in advance.
Em
-
Can you give some more details of what exactly you are doing? E.g. give a step by step account of how you recreate the 404. Also how you are creating the custom links.
Thanks for the quick reply.
On the website I have rewritten some of the urls for categories, custom post types, custom taxonomies, posts and pages, I get a 404 error on this redirection : subsite.site.com/local-signup/.
I am creating my custom links like this :
class EDPRewriteLT implements PAPIActionHookInterface, PAPIFilterHookInterface { public function __construct() { register_activation_hook(__FILE__, [$this, 'plugin_activate']); register_deactivation_hook(__FILE__, [$this, 'plugin_deactivate']); } /** * Implements get_actions() from PAPIActionHookInterface. * * Returns an array of actions that the object needs to be hooked to. * * @return array */ public static function get_actions() { return [ 'init' => ['custom_rewrite_rules', 9], 'wp' => 'set_category_links' ]; } /** * Implements get_filters() from PAPIFilterHookInterface. * * Returns an array of filters that the object needs to be hooked to. * * @return array */ public static function get_filters() { return [ 'term_link' => ['set_taxonomy_links', 10, 3], 'post_type_link' => ['set_fiche_produit_links', 10, 2], 'post_link' => ['set_post_links', 10, 2], 'rewrite_rules_array' => ['remove_default_rewrite_rules', 10, 1] ]; } public function plugin_activate() { $this->custom_rewrite_rules(); flush_rewrite_rules(); } public function plugin_deactivate() { flush_rewrite_rules(); } /** * Adds custom rewrite rules * For ARTICLES, FICHES PRODUITS, CLASSIFICATION, UNIVERS, CATEGORY */ public function custom_rewrite_rules() { // Rewrites rules for ARTICLES add_rewrite_rule('articles/([^/]+)-([0-9]+)/?$', 'index.php?post_type=post&name=$matches[1]&p=$matches[2]', 'top'); // Rewrites rules for FICHE PRODUIT add_rewrite_rule('([^/]+)-([0-9]+)/?$', 'index.php?post_type=fiche-produit&fiche-produit=$matches[1]&p=$matches[2]', 'top'); // Rewrites rules for CLASSIFICATION add_rewrite_rule('articles/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$', 'index.php?classification=$matches[1]&feed=$matches[2]', 'top'); add_rewrite_rule('articles/([^/]+)/(feed|rdf|rss|rss2|atom)/?$', 'index.php?classification=$matches[1]&feed=$matches[2]', 'top'); add_rewrite_rule('articles/([^/]+)/embed/?$', 'index.php?classification=$matches[1]&embed=true', 'top'); add_rewrite_rule('articles/([^/]+)/page/?([0-9]{1,})/?$', 'index.php?classification=$matches[1]&paged=$matches[2]', 'top'); add_rewrite_rule('articles/([^/]+)/?$', 'index.php?classification=$matches[1]', 'top'); add_rewrite_rule('articles/?$', 'index.php?taxonomy=classification', 'top'); // Rewrites rules for UNIVERS add_rewrite_rule('([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$', 'index.php?univers=$matches[1]&feed=$matches[2]', 'top'); add_rewrite_rule('([^/]+)/(feed|rdf|rss|rss2|atom)/?$', 'index.php?univers=$matches[1]&feed=$matches[2]', 'top'); add_rewrite_rule('([^/]+)/embed/?$ ', 'index.php?univers=$matches[1]&embed=true', 'top'); add_rewrite_rule('([^/]+)/page/?([0-9]{1,})/?$', 'index.php?univers=$matches[1]&paged=$matches[2]', 'top'); add_rewrite_rule('([^/]+)/?$', 'index.php?univers=$matches[1]', 'top'); // Rewrites rules for CATEGORY add_rewrite_rule('([^/]+)/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$', 'index.php?univers=$matches[1]&category_name=$matches[2]&feed=$matches[3]', 'top'); add_rewrite_rule('([^/]+)/(.+?)/(feed|rdf|rss|rss2|atom)/?$', 'index.php?univers=$matches[1]&category_name=$matches[2]&feed=$matches[3]', 'top'); add_rewrite_rule('([^/]+)/(.+?)/embed/?$', 'index.php?univers=$matches[1]&category_name=$matches[2]&embed=true', 'top'); add_rewrite_rule('([^/]+)/(.+?)/page/?([0-9]{1,})/?$', 'index.php?univers=$matches[1]&category_name=$matches[2]&paged=$matches[3]', 'top'); add_rewrite_rule('([^/]+)/(.+?)/?$', 'index.php?univers=$matches[1]&category_name=$matches[2]', 'top'); } /** * Sets CLASSIFICATION & UNIVERS permalinks */ public function set_taxonomy_links($link, $term, $taxonomy) { switch ($taxonomy) { case 'classification': return str_replace('classification/', 'articles/', $link); break; case 'univers': return str_replace('univers/', '', $link); break; default: return $link; break; } } /** * Sets FICHE PRODUIT permalinks */ public function set_fiche_produit_links($link, $post) { if ($post->post_type === 'fiche-produit') { return site_url($post->post_name . '-' . $post->ID); } else { return $link; } } /** * Sets default post -> ARTICLE permalinks */ public function set_post_links($link, $post) { if ($post->post_type === 'post') { return site_url('articles/' . $post->post_name . '-' . $post->ID); } else { return $link; } } /** * Sets default CATEGORY links to 404 */ public function set_category_links($wp) { if (preg_match('/category\//', $wp->request)) { global $wp_query; $wp_query->set_404(); status_header(404); } } /** * Removes CLASSIFICATION & UNIVERS default slug rules */ public function remove_default_rewrite_rules($rules) { foreach ($rules as $rule => $rewrite) { if (preg_match('/classification\//', $rule) || preg_match('/univers\//', $rule)) { unset($rules[$rule]); } } return $rules; } } PAPIHookManager::register(new EDPRewriteLT);
Everything works, but the local-signup page of NSUR.
I’m using Monkey Rewrite Analyzer to debug and the
local-signup/?$
-> nsur_signup: true fromadd_rewrite_rule( 'local-signup/?$', 'index.php?nsur_signup=true', 'top' );
still appears.As mentioned previously, the redirection still works on my other subsites for which there are no url rewrites.
Thanks in advance for your help!
Fixed, one of my rules was overriding the nsur’s rule.
Thanks for the update, I haven’t had time this week to help.
- The topic ‘404 error on subsite with URL rewrites’ is closed to new replies.