Duplicate content and canonical URLs.
Based on discussion on forum I spent some time reading a lot of articles about this topic - duplicate content and canonical URLs. Some advices are exactly opposite, so it's on you. This plugin just helps to solve some issues.
It's based on the canonical plugin in e107Inc directory. I couldn't get that plugin to work, but at the end I was able to fix it too. So this plugin uses the same table (and next two ones) as original plugin.
BE AWARE - canonical URLs are not redirects! They just point search engines to the same content if more versions of the same page is available. (It’s imply saying, it's more complicated, but point is - Canonical URL must exist!, it's not like sef-url field, where engine does all rewritings)
So how this plugin works? There are 3 types of canonical URLs:
- manually created and combined with existing links (first priority)
- related to e107 tables. At this time only for news.
- generated from e107 constants
I use it for homepage (https://www.e107.sk/, https://www.e107.sk/index.php) and for news homepage - news.php, news/, news - without backslash... - in debug mode type:canonical_request_URLs (Yes, I know, terrible name, but I was focused to get it work, I will solve cosmetics details later).
With news there is new tab Canonical and there you should insert absolute (full) canonical address. After this all version of that news (after changing sef-url, after using old menu with legacy link) will have the same canonical url. In debug mode type:related_URLs
Be aware that after changing way how news URL is created, you will do it again (if you don’t use legacy links). Or you will choose the right setting :) See as example: https://e107.sk/news/view/13/freelancer-theme-for-e107-2-1-4
This option can be set ON/OFF in Settings. This code is moved from theme.php where was originally tested during our discussion with Evgura about this topic.
What are rules for generating?
- it ignores gallery plugin (try to look at constants with this plugin)
- with forum plugin it uses e_REQUEST_URL . You should use SEF-URL option with forum plugin. I tried to put it OFF, but some functionality is missing then and it always returned somehow back...
- if there is available e_URL_LEGACY constant, it uses it for canonical URL (it is set for plugins using simple e_url.php for rewritting)
- if there are available e_PAGE and e_QUERY constants, it uses them for canonical URL
- you can set all plugin ON/OFF without uninstallation. If something is wrong, just deactivate it
- you can set ON Run Check - for your canonical link it returns if they are available (200 vs 404 values). It takes some time, I just needed quick check if all links exist.
- you can set Display Debug info on Frontend - it displays needed values for main admins without need to set debug developer mode or debug browser extension. This is probably the best feature for me, it was annoying to open source code or to scroll full list of e107 constants to check existing values)
- you can set OFF generating of legacy URLs.
And again here: I am sure it can be written better way, so just do it. I do what I know and I am aware that my code is far far from perfection. You are welcome to write better plugin.
PS. I would put bigger image into text, but I use on this site version with TinyMce issues.