WordPress.org

Make WordPress Core

Opened 4 years ago

Last modified 7 months ago

#12456 accepted enhancement

Canonical URL redirect issue with post_id/postname permalink structure

Reported by: Frank.Prendergast Owned by: dd32
Milestone: Future Release Priority: normal
Severity: normal Version: 2.9.2
Component: Canonical Keywords: has-patch tested 3.3-early
Focuses: Cc:

Description

The issue:

Using /%post_id%/%postname%/ as permalink structure,
Most canonical redirects work fine, except:

domain.com/post_id/ brings you to the post but does not redirect to the canonical domain.com/post_id/postname/

Additional info:

The above permalink structure conforms to best practice as described in the codex:
http://codex.wordpress.org/Using_Permalinks#Structure_Tags

Therefore I figured this was a bug, given the attention given to redirecting to the canonical url "So to avoid confusing search engines and to consolidate your rankings for your content, there should only be one URL for a resource."
http://markjaquith.wordpress.com/2007/09/25/wordpress-23-canonical-urls/

Attachments (3)

12456.diff (933 bytes) - added by dd32 4 years ago.
12456.2.diff (1.2 KB) - added by wonderboymusic 15 months ago.
12456.3.diff (1.3 KB) - added by atimmer 7 months ago.

Download all attachments as: .zip

Change History (21)

comment:1 scribu4 years ago

  • Component changed from Permalinks to Canonical
  • Milestone changed from Unassigned to 3.0
  • Owner changed from ryan to markjaquith

comment:2 follow-ups: dd324 years ago

  • Keywords has-patch needs-testing added; permalinks canonical redirect removed
  • Milestone changed from 3.0 to 3.1
  • Type changed from defect (bug) to enhancement

It doesnt appear that Redirecting Rewritten URL's has ever been handled by the Canonical system for WordPress. Most of the code is for redirecting ?query=var to /query/something/var/.

I'm going to attach a little-tested patch, please test it out, and try to break it if possible :)

IMO, This may be fitting in as an enhancement since its not currently a handled case and is not a regression, which would mean relegating it to 3.1 as we're in 3.0 feature freeze.

dd324 years ago

comment:3 in reply to: ↑ 2 ; follow-up: Frank.Prendergast4 years ago

Thank you so much for coming back to me on this. I've implemented the patch on a test site using the nightly build and so far so good.

I wasn't able to try it on my main site because I wouldn't know how to implement the patch as the canonical.php is different, so proper & full tire kicking might need to wait until 3.0 is ready for implementing on my main site.

Many thanks again. This could provide people with a nice little url shortening tool without risking losing any "Google juice" if people link to the propogated shorter url.

comment:4 in reply to: ↑ 3 Frank.Prendergast4 years ago

(My main site being WP 2.9.2)

comment:5 in reply to: ↑ 2 Frank.Prendergast4 years ago

Just to check back and say that I've had this patch on a test install I use for development and haven't run into any issues with it.

Thank you again, and let me know if I should do anything else (first time submitting anything to trac).

comment:6 dd324 years ago

  • Keywords tested early added; needs-testing removed
  • Owner changed from markjaquith to dd32
  • Status changed from new to accepted

Thanks for getting back to me that it works as expected.

I'm not going to add this to 3.0 due to how close we are to release, so it'll be in 3.1

comment:7 Otto424 years ago

Noticed this one yesterday. This is definitely a problem that needs to be resolved. Recommend pushing it into the next release.

comment:8 nacin4 years ago

  • Milestone changed from Awaiting Triage to 3.1

comment:9 hlanggo4 years ago

  • Cc hlanggo added

/postname/post_id also has the same problem. /postname shows the correct page but doesn't redirect to the canonical /postname/post_id

With /postname/post_id (no ending slash) permalink structure:

Canonical: http://metroparkhotelcebu.com/mph/138 (/postname/post_id)
Redirect OK: http://metroparkhotelcebu.com/138/mph (/post_id/postname)
No redirect: http://metroparkhotelcebu.com/mph (/postname)
404: http://metroparkhotelcebu.com/138 (/post_id)

Yes, I am aware that using postname first causes performance issues but back when I decided on it, http://codex.wordpress.org/Using_Permalinks said it was okay to start with postname. Thankfully, my sites are small so the performance problems aren't debilitating.

comment:10 dd324 years ago

hlanggo: Did you try the attached patch at all?

comment:11 hlanggo3 years ago

No, I did not try the patch. Just wanted to report that /postname/post_id has the same redirect issue as post_id/postname

It's the "starting with postname" performance issue which concerns me the most. I just came across your ticket while searching about it.

comment:12 jane3 years ago

  • Milestone changed from 3.1 to Future Release

Punting this enhancement ticket b/c we are going into beta. Can reconsider for 3.2 when there is a well-tested patch.

comment:13 dd323 years ago

  • Keywords 3.2-early added; early removed

planning on covering this, and a few other cases such as #14773 in 3.2

comment:14 dd323 years ago

  • Keywords 3.3-early added; 3.2-early removed

Missed the boat for 3.2 again.

This covers #17653 as well.

comment:15 dd323 years ago

Patch doesnt cover /page/xx/ redirections and a few others probably.

wonderboymusic15 months ago

comment:16 wonderboymusic15 months ago

  • Milestone changed from Future Release to 3.6

I rejiggered dd32's patch to make it work against trunk 3 years later (class of 3.3-early) - and also fixes #17653, which is class of 3.2-early. Passes all Unit Tests.

comment:17 ryan11 months ago

  • Milestone changed from 3.6 to Future Release

atimmer7 months ago

comment:18 atimmer7 months ago

12456.3.diff refreshes dd32's patch against current trunk and the new repository structure.

Also adds set_url_scheme that wonderboymusic added here.

Note: See TracTickets for help on using tickets.