joomla / joomla-cms

Home of the Joomla! Content Management System
https://www.joomla.org
GNU General Public License v2.0
4.73k stars 3.64k forks source link

Adds Suffix to URL setting not working correctly #15025

Closed Webdongle closed 7 months ago

Webdongle commented 7 years ago

Steps to reproduce the issue

Install with sample data In Global config set 'Adds Suffix to URL' Yes Visit the frontend and navigate to any page

Remove the .html and press enter

Expected result

The url will show with .html appended After removing the .html and pressing enter the .html should be appended again

Actual result

The url will show with .html appended After removing the .html and pressing enter the page displays but the url does not have .html appended

System information (as much as possible)

Additional comments

Bakual commented 7 years ago

The suffix just specifies the format in which the page should be delivered which defaults to HTML. So if there is no suffix, HTML is assumed.

I don't see an issue with that behaviour. Otherwise we would have to do a redirect to force the suffix.

brianteeman commented 7 years ago

This is working as intended

mbabker commented 7 years ago

While working as intended, IMO it's really one of those inconsistent and goofy behaviors that might be good to one day create a "fix" for (which should honestly just be a simple plugin but with the magical black box known as Joomla's router who knows...).

Webdongle commented 7 years ago

@brianteeman

If 'Adds Suffix to URL' is working as expected when set Yes then it is not working as expected when set No. Because when set No then www.site.com/page.html the .html is removed when the page is reached.

Either both settings (Yes and No) add .html or remove .html (respectively) ... or .html and .html are not changed by either

Also 'Adds Suffix to URL' set No prevents code in the .htaccess from converting non .html to html

It is a bug because it prevents the user from forcing non .html being displayed as .html !!!

tarakbz commented 7 years ago

I think this is a real bug, search engines see these url's as different and think it is duplicate content and penalize all joomla sites


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/15025.

mbabker commented 7 years ago

This is probably something to address for 4.0. IMO it is too risky to try and change the behavior in 3.x because it will change URLs (even if most would be redirected sufficiently by default) and system behaviors (if you arbitrarily redirect non suffixed to HTML suffixed you could possibly break URLs not supplying a suffix but expecting JSON views).

Hackwar commented 7 years ago

Yes, this can be described as a bug and should be fixed, But this is also something that we should indeed not be doing in 3.x and instead in 4.0. If you look at the code in 4.0, the change is pretty easy.

Los-Carnales commented 7 years ago

I totally agree with @tarakbz answer, and is not a real error is a fatal error, because if we select the option to add html suffix in our URLs is to have the suffix in the URLs, but if you access the URL by removing the .html you also access the URL but it is not the same. Also if you access the URL by placing a "/" you can access the URL. But in short they are 3 different URLs. The result would have to be that you could only access the URL with the .html at the end and the rest that made a redirect to the real URL or in your case a 404 error, although I think the redirection is better.


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/15025.

Hackwar commented 7 years ago

@Los-Carnales You are right that this is an issue, but we can't really do anything about that in 3.x, since otherwise you are breaking existing behavior. It might be wrong, but there is simply too much code out there that depends on this behavior. 4.0 is the place to fix this.

Los-Carnales commented 7 years ago

@Hackwar Thanks for your answer, but suppose there are thousands of websites with Joomla 3.x and when they release the version 3.8 that the modern Router carried by you, they will continue to have the same problem or repair this problem. Think that not always users of Joomla update their sites with the latest version, so if you do not get on the car of version 4 will be lost with the almighty Google. You tell me that 4.0 is the place to fix this, but when will you publish Joomla 4.0 stable? I also want to mention the comment I made on your github account: Redirect legacy routes to modern routes. Sorry for these issues, but not these issues are very important not only for this humble server, but for a Joomla community that has both end users, developers, webmasters, publishers, etc ... to which this can influence them and Much in their work.


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/15025.

mbabker commented 7 years ago

The problem isn't fixing this issue. The problem is fixing this issue comes with side effects and breaks existing behavior in a non-compatible way. Per our development strategy, that constitutes a backward compatibility break and can only be included in a X.0 release (so 4.0).

As a short term solution, there is probably a way to build a plugin you can install on your site(s) to address this, but for the core API we cannot make such a potentially breaking change without breaking our promise to the community of not breaking backward compatibility except for major releases which allow it. This is a long lived behavior in the core of Joomla and changing it can and probably will break existing sites and extensions in ways we can't yet know.

Los-Carnales commented 7 years ago

@mbabker thanks for your answer and clarification, I will continue to wait for 4.0 and get good changes.


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/15025.

Hackwar commented 7 years ago

Supporting @mbabker here. Our main problem is, that the routing code of Joomla currently has a metric shitload of unreadable code in it, which you also can not override. At the same time, we can not change this without breaking some sites. However, when you look in the 4.0-dev branch, you can see that JRouter and JRouterSite have been heavily modified and that the code is a lot better to read. At the same time, all behavior is now replaceable and can be switched on or off with a plugin. The way it is set up in the 4.0-dev branch, the Joomla core can now also "drop" functionality in a backwards compatible way whenever we want. We simply can add additional routing rules and not include old ones on startup and provide switches for the different rules. That should prevent us from ever running into the current situation again. Worst case: We get a bunch of additional settings, most of which we can drop again when we are at the next major release (5.0 in this case). But we do have this on our radar.

Los-Carnales commented 7 years ago

@mbabker and @Hackwar , But when the Joomla 4.0 version comes out, will we continue to encounter this problem or will you have already fixed this? And the compatibility of URLs that will be generated by the Joomla kernel when creating URLs from an external component? Will continue to generate URLs without SEF correctly, except that we create these URLs by assigning them to the component in question and then repeating the operation by creating a link to the component from a menu item. Why in Joomla we continue to depend on the Menu to generate correct URLs or that everything works well, saving the exception of creating a Joomla article, because if you do it from a component, it always gives problems.


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/15025.

Hackwar commented 7 years ago

The menu system is the main part of Joomla. This defines which component to use and we are completely dependend on this. Joomla will (hopefully) never change this. If you don't like this system, then please use Drupal. They have the alternative to our system, namely creating nodes (=menu items) for everything.

I do not know what 4.0 will contain. The code is not written and I personally have little time and energy to further work on this, considering the feedback that I got and the really exhausting struggle all of this was so far. You would have to find another idiot willing to write the code and go through this Sysiphean work of having the Joomla project accepting these changes.

dgrammatiko commented 7 years ago

Why in Joomla we continue to depend on the Menu to generate correct URLs or that everything works well

Well that's Joomla's foundation. The so called architecture. As @Hackwar said if you don't like it wp and drupal use different approaches. But honestly Joomla is very similar to your file system (NTFS/HFS) Think directories as categories and files as items, articles, contacts etc... And it's extremely easy...

Los-Carnales commented 7 years ago

@mbabker and @Hackwar ,

I'm testing the 4.0-dev branch in localhost, but I see that there's still the same issue discussed above about activating the default .html suffix. If you activate add the suffix to URL you can access the URL either with (.hml without .html or by removing .html and placing "/"). If you deactivate adding the suffix to URL you can access the URL either with (without .html or by placing "/"), if you access the URL by placing a .html error "The requested page can not be found." I do not know if it's because this is still under repair or it will be stable version 4.0. This is truly frustrating, since we can not organize or prepare our Joomla sites for the upcoming releases. How can prepare your roadmap a: Webmaster, end user or a company dedicated to making pages with Joomla, if we can not really know what we will find in the next version.

@dgt41 and @Hackwar ,

I have been betting on this CMS since its inception and I do not know that WP or Drupal is an alternative, I also understand that MENUS are the main part of Joomla, although from my point of view I think it is a mistake, but of course this is what Decided for years within the project and core Joomla. My comments are not to throw down Joomla, always to try to improve the system and benefit the whole community. I know that it is not easy to develop the code in Joomla, but I think that after all the versions we have seen so far, cases like the one presented in this Issue would have to be soloed faster and not drag queue from past versions.

mbabker commented 7 years ago

We said it can be changed in 4.0, not that it had already been changed. If it had already been changed, it would have been explicitly stated.

Los-Carnales commented 7 years ago

@mbabker thanks again for your reply. Well it will be good to wait for it to be expressed explicitly :). So far all the links I'm testing on localhost with both the 3.8-dev branch and the 4.0-dev work correctly with the modern router, saving the issue discussed in this Issue.

ghost commented 6 years ago

@csthomas can you have a Look?


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/15025.

csthomas commented 6 years ago

The solution for old routing is to use 3rd party system plugin to correct URLs.

Once you eliminate the inconsistency / duplication of URLs, going to modern routing will not be difficult.

So far all the links I'm testing on localhost with both the 3.8-dev branch and the 4.0-dev work correctly with the modern router,

If the modern routing works as expected then what joomla can do more for this issue? If you are thinking about B/C support for old URLs, then there is a place to do that.

It may be one more system plugin per component (or an option in component) that parses old URLs and redirects them to new ones.

ghost commented 6 years ago

thanks @csthomas. Do i get it right to let it as is in 3.*?

csthomas commented 6 years ago

Do i get it right to let it as is in 3.*?

In old stable routing let it as it is.

IMO for modern URL routing in 3.x, joomla can add parsing support for old URLs (also invalid) and redirect them.

ghost commented 6 years ago

Status is set on "Needs Review".

brianteeman commented 6 years ago

Set to "Re-evaluate in Joomla 4" for the reasons stated above

beeweebee commented 7 months ago

Hi,

I can confirm the bug still exists in Joomla 4.

Both:

https://www.its-acoustique.fr/fr/isolation-insonorisation.html

and

https://www.its-acoustique.fr/fr/isolation-insonorisation

pages work creating duplicate content in the Google Search Console (and probably in Google SERP).

Still no fix on this?


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/15025.

richard67 commented 7 months ago

Closing as having a pull request. Please test #42850 . Thanks in advance.