[wp-trac] [WordPress Trac] #8958: Huge amount rewrite rules for page revisions after upgrade

WordPress Trac wp-trac at lists.automattic.com
Sun Jan 25 08:36:03 GMT 2009


#8958: Huge amount rewrite rules for page revisions after upgrade
--------------------------+-------------------------------------------------
 Reporter:  matthijs      |       Owner:  ryan                                
     Type:  defect (bug)  |      Status:  new                                 
 Priority:  normal        |   Milestone:                                      
Component:  Permalinks    |     Version:  2.7                                 
 Severity:  major         |    Keywords:  permalinks, rewrite_rules, revisions
--------------------------+-------------------------------------------------
 The problem was introduced after the upgrade from 2.6.5 to 2.7.
 The site has a permalink structure of
 /%category%/%year%/%monthnum%/%day%/%postname%/

 After the upgrade the blog runs more then 2400 queries per page load. The
 site works normal, only very very slow (of course).
 Research into the queries being run shows wordpress is trying to insert
 the rewrite_rules in the wp_options table. Only problem is: the field
 rewrite_rules contains about 20,000 lines of code/rules, putting that
 single field in a text file is >1.2 Mb large. So it chokes on that.

 Disabling plugins, re-importing the db file, renewing the wp files,
 nothing helps. Going back to 2.6.5 and then again upgrading reintroduces
 the problem.

 Changing the permalink structure to something else, for example:
 /%year%/%monthnum%/%day%/%postname%/

 also solves the problem temporarily. As soon as I change back to
 /%category%/%year%/%monthnum%/%day%/%postname%/

 wordpress again tries to insert the huge query into the field
 rewrite_rules, which isn't possible.

 Looking at the rewrite_rules it seems it repeats the same rules for every
 page and attachment, like

 s:35:\"vacancies/473/attachment/([^/]+)/?$\";
 s:32:\"index.php?attachment=$matches[1]\";
 s:45:\"vacancies/473/attachment/([^/]+)/trackback/?$\";
 s:37:\"index.php?attachment=$matches[1]&tb=1\";
 s:65:\"vacancies/473/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";
 s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";
 s:60:\"vacancies/473/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";
 s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";
 s:60:\"vacancies/473/attachment/([^/]+)/comment-page-([0-9]{1,})/?$\";
 s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";
 s:28:\"(vacancies/473)/trackback/?$\";

 Interestingly:

 1- when I do an export of the posts to the xml file, install a fresh wp
 and then re-import the posts, the problem goes away. In that case, the
 field rewrite_rules, suddenly "only" contains around 5000 rewrite_rules.

 2 - all the rules seem to relate to (older) versions of the pages and
 attachments
 So maybe the problem is that wordpress is writing rules for every page
 revision and every page attachment it has ever had. The website is not
 that big, but with a few hundred pages, a few hundred attachments it seems
 to go into the 20,000 rules with this specific permalink structure. That
 could also explain that when I do the import of xml in a fresh install,
 there are no page revisions anymore and the rewrite rules are not that
 many.

 I cannot imagine it is something else, because besides the fact that that
 one query is too large to be run, everything is fine. Database tables are
 in good condition, files are correct, I tried it on different servers, etc
 so I can almost certainly rule out another causes. Besides the fact that
 wp cannot run the query to insert the rewrite_rules, everything works
 fine, front- and backend.

-- 
Ticket URL: <http://trac.wordpress.org/ticket/8958>
WordPress Trac <http://trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list