@prefix sioc: <http://rdfs.org/sioc/ns#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix content: <http://purl.org/rss/1.0/modules/content/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<https://lhero.org/portfolio/lh-force-lowercase-urls/>
  a sioc:Post ;
  dc:title "Changelog" ;
  dcterms:identifier 150470 ;
  dc:modified "2026-10-16T09:37:45Z"^^xsd:dateTime ;
  dc:created "2026-10-16T09:37:45Z"^^xsd:dateTime ;
  sioc:link <https://lhero.org/portfolio/lh-force-lowercase-urls/changelog/> ;
  sioc:has_creator <https://lhero.org/author/1/#account> ;
  sioc:has_container <https://lhero.org/#posts> ;
  content:encoded "<ul class=\"lh_portfolio-meta\"><li><strong>Part of:</strong> <a href=\"https://lhero.org/portfolio/lh-force-lowercase-urls/\">LH Force Lowercase Urls</a></li></ul><ul class=\"lh_portfolio-changelog\"><li><strong>1.1.2:</strong> Removes the class_exists() guard wrapped around the plugin&#039;s own LH_Force_lowercase_urls_plugin class. The guard protected nothing, since WordPress loads each plugin file once, and on this server an unextended class wrapped this way can be bound at compile time, making the guard skip the plugin&#039;s setup silently with no error. Behaviour is unchanged.</li><li><strong>1.1.1:</strong> Fixes an endless redirect loop on URLs containing percent-encoded characters. The plugin lowercased the whole path, including the two hex digits of each percent escape, so an encoded backslash or an encoded accented letter was rewritten with lowercase hex. Both spellings mean the same thing, and HTTP clients that normalise escapes to uppercase hex (as RFC 3986 recommends) sent the uppercase form straight back, getting a 301 to the same address every time; Princes Park Touch logged one such loop a second. Percent escapes are now left exactly as requested and only the other characters are lowercased, so a URL whose only uppercase letters are in escapes is no longer redirected, and URLs with non-ASCII slugs no longer get a needless redirect. Also normalises the version to SemVer (1.01 becomes 1.1.1).</li></ul>"^^rdf:XMLLiteral ;
  sioc:content "Part of: LH Force Lowercase Urls1.1.2: Removes the class_exists() guard wrapped around the plugin&#039;s own LH_Force_lowercase_urls_plugin class. The guard protected nothing, since WordPress loads each plugin file once, and on this server an unextended class wrapped this way can be bound at compile time, making the guard skip the plugin&#039;s setup silently with no error. Behaviour is unchanged.1.1.1: Fixes an endless redirect loop on URLs containing percent-encoded characters. The plugin lowercased the whole path, including the two hex digits of each percent escape, so an encoded backslash or an encoded accented letter was rewritten with lowercase hex. Both spellings mean the same thing, and HTTP clients that normalise escapes to uppercase hex (as RFC 3986 recommends) sent the uppercase form straight back, getting a 301 to the same address every time; Princes Park Touch logged one such loop a second. Percent escapes are now left exactly as requested and only the other characters are lowercased, so a URL whose only uppercase letters are in escapes is no longer redirected, and URLs with non-ASCII slugs no longer get a needless redirect. Also normalises the version to SemVer (1.01 becomes 1.1.1)." ;
  sioc:topic <https://lhero.org/?taxonomy=author&term=cap-1> .

<https://lhero.org/author/1/#account> rdfs:seeAlso <https://lhero.org/author/1/?feed=lhrdf&format=turtle> .
<https://lhero.org/?taxonomy=author&term=cap-1> rdfs:seeAlso <https://lhero.org/?taxonomy=author&term=cap-1&feed=lhrdf&format=turtle> .
