<?xml version="1.0"?>
<?xml-stylesheet href="/transform" type="text/xsl"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:bibo="http://purl.org/ontology/bibo/" xmlns:bs="http://purl.org/ontology/bibo/status/" xmlns:ci="https://vocab.methodandstructure.com/content-inventory#" xmlns:dct="http://purl.org/dc/terms/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" lang="en" prefix="bibo: http://purl.org/ontology/bibo/ bs: http://purl.org/ontology/bibo/status/ ci: https://vocab.methodandstructure.com/content-inventory# dct: http://purl.org/dc/terms/ foaf: http://xmlns.com/foaf/0.1/ rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# xhv: http://www.w3.org/1999/xhtml/vocab# xsd: http://www.w3.org/2001/XMLSchema#" vocab="http://www.w3.org/1999/xhtml/vocab#" xml:lang="en">
  <head>
    <title property="dct:title">URI Syntax Constraints</title>
    <base href="https://doriantaylor.com/policy/uri-syntax-constraints"/>
    <link href="../document-stats#ETfoOVCLkB1wtaTI8mnAsL" rev="ci:document"/>
    <link href="../elsewhere" rel="alternate bookmark" title="Elsewhere"/>
    <link href="../this-site" rel="alternate index" title="This Site"/>
    <link href="http://purl.org/ontology/bibo/status/published" rel="bibo:status"/>
    <link href="" rel="ci:canonical" title="URI Syntax Constraints"/>
    <link href="../lexicon/#EzqXIsriaILFcWjXdS7FbI" rel="dct:audience" title="Software Developer"/>
    <link href="../person/dorian-taylor#me" rel="dct:creator" title="Dorian Taylor"/>
    <link href="uri-path-and-query-parameter-semantics" rel="dct:references next" title="URI Path and Query Parameter Semantics"/>
    <link href="uris-resources-and-representations" rel="dct:references up" title="URIs, Resources and Representations"/>
    <link href="../lexicon/#EnewYu-MeZVXNc97q_-jAI" rel="dct:subject" title="Web Development"/>
    <link href="../person/dorian-taylor" rel="meta" title="Who I Am"/>
    <link about="../" href="../3f36c30c-6096-454a-8a22-c062100ae41f" rel="alternate" type="application/atom+xml"/>
    <link about="../" href="../f07f5044-01bc-472d-9079-9b07771b731c" rel="alternate" type="application/atom+xml"/>
    <link about="../" href="../this-site" rel="alternate"/>
    <link about="../" href="../elsewhere" rel="alternate"/>
    <link about="../" href="../e341ca62-0387-4cea-b69a-cdabc7656871" rel="alternate" type="application/atom+xml"/>
    <link about="../verso/" href="../3f36c30c-6096-454a-8a22-c062100ae41f" rel="alternate" type="application/atom+xml"/>
    <link about="../verso/" href="../this-site" rel="alternate"/>
    <link about="../verso/" href="../elsewhere" rel="alternate"/>
    <meta content="uri-syntax-constraints" datatype="xsd:token" property="ci:canonical-slug"/>
    <meta content="The standardized constraints on URI syntax are a lot looser than you would expect them to be, but it behoves us to come up with artificial constraints that create behaviour we can depend on." name="description" property="dct:abstract"/>
    <meta content="2008-06-15T06:44:20+00:00" datatype="xsd:dateTime" property="dct:created"/>
    <meta content="uri-syntax-constraints" property="dct:identifier"/>
    <meta content="2008-06-15T06:52:34+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2008-06-15T07:16:55+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2008-06-17T08:07:31+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2008-07-25T06:40:45+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2008-07-25T16:56:24+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2008-07-25T17:43:29+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2008-07-30T23:12:27+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2008-07-31T02:16:54+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2008-09-01T04:29:32+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2008-10-09T02:02:01+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2009-03-04T00:43:00+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2022-05-31T04:18:52+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta about="../person/dorian-taylor#me" content="Dorian Taylor" name="author" property="foaf:name"/>
    <meta content="summary" name="twitter:card"/>
    <meta content="@doriantaylor" name="twitter:site"/>
    <meta content="URI Syntax Constraints" name="twitter:title"/>
    <meta content="The standardized constraints on URI syntax are a lot looser than you would expect them to be, but it behoves us to come up with artificial constraints that create behaviour we can depend on." name="twitter:description"/>
    <object>
      <nav>
        <ul>
          <li>
            <a href="adjacent-and-alternate-domains" rev="dct:references" typeof="bibo:Report">
              <span property="dct:title">Adjacent and Alternate Domains</span>
            </a>
          </li>
          <li>
            <a href="case-mixing-in-domain-names" rev="dct:references" typeof="bibo:Report">
              <span property="dct:title">Case Mixing in Domain Names</span>
            </a>
          </li>
          <li>
            <a href="country-domains-and-new-school-generic-tlds" rev="dct:references" typeof="bibo:Report">
              <span property="dct:title">Country Domains and New-School Generic TLDs</span>
            </a>
          </li>
          <li>
            <a href="domain-name-recommendations" rev="dct:references" typeof="bibo:Report">
              <span property="dct:title">Domain Name Recommendations</span>
            </a>
          </li>
          <li>
            <a href="http-url-path-syntax-constraints" rev="dct:references" typeof="bibo:Report">
              <span property="dct:title">HTTP URL Path Syntax Constraints</span>
            </a>
          </li>
          <li>
            <a href="hyphen-vs-underscore" rev="dct:references" typeof="bibo:Report">
              <span property="dct:title">Hyphen vs. Underscore</span>
            </a>
          </li>
          <li>
            <a href="other-non-alpha-numeric-characters-in-http-urls" rev="dct:references" typeof="bibo:Report">
              <span property="dct:title">Other Non-Alpha-Numeric Characters in HTTP URLs</span>
            </a>
          </li>
          <li>
            <a href="the-uri-naming-conundrum" rev="dct:references" typeof="bibo:Report">
              <span property="dct:title">The URI Naming Conundrum</span>
            </a>
          </li>
          <li>
            <a href="to-www-or-not-to-www" rev="dct:references" typeof="bibo:Report">
              <span property="dct:title">To www or Not to www</span>
            </a>
          </li>
          <li>
            <a href="uri-path-and-query-parameter-semantics" rev="dct:references" typeof="bibo:Article">
              <span property="dct:title">URI Path and Query Parameter Semantics</span>
            </a>
          </li>
          <li>
            <a href="uris-resources-and-representations" rev="dct:references" typeof="bibo:Report">
              <span property="dct:title">URIs, Resources and Representations</span>
            </a>
          </li>
          <li>
            <a href="../document-stats#ETfoOVCLkB1wtaTI8mnAsL" rev="ci:document" typeof="qb:Observation">
              <span>urn:uuid:4dfa0e54-22e4-4075-bc2d-69323c9a702c</span>
            </a>
          </li>
        </ul>
      </nav>
    </object>
  </head>
  <body about="" id="EFt6eNpsJAqBzoi83RHeMK" typeof="bibo:Report">
    <p>In just under two decades, the <a href="../lexicon/uniform-resource-identifier" title="Uniform Resource Identifier" rel="dct:references">URI</a>, or more specifically the <acronym title="Hypertext Transfer Protocol">HTTP</acronym> <acronym title="Uniform Resource Locator">URL</acronym>, has risen from a humble remote <a href="../lexicon/file" title="File" rel="dct:references">file</a> identifier on an experimental system to a key component of modern business. The <acronym title="Uniform Resource Identifier">URI</acronym> can be seen on  billboards, television commercials, business cards and even t-shirts. The <acronym title="Uniform Resource Identifier">URI</acronym> has every bit, if not <em>more</em> of the potency of the telephone number, fax number and e-mail address that came before it.</p>
    <p>The <acronym title="Hypertext Transfer Protocol">HTTP</acronym> <acronym title="Uniform Resource Locator">URL</acronym> is a very significant part of the user interface of any <abbr title="World Wide Web">Web</abbr> site indeed. <acronym title="Uniform Resource Locator">URL</acronym>s are scrawled by hand, recited over the telephone, typed into <abbr title="World Wide Web">Web</abbr> browsers from printed material, or even optically scanned. It is therefore <em>essential</em> that they be as <em>clear</em> and <em>unambiguous</em> as possible.</p>
    <p>The <a href="http://tools.ietf.org/html/rfc3986" title="RFC 3986 &#x2014; Uniform Resource Identifier (URI): Generic Syntax" rel="dct:references">specification</a> that defines the syntax for all <acronym title="Uniform Resource Identifier">URI</acronym>s does so in a fairly broad manner in order to accomodate a multitude of schemes and therefore promote adoption and keep the spec <em>future-proof</em>. Since <acronym title="Hypertext Transfer Protocol">HTTP</acronym> <acronym title="Uniform Resource Locator">URL</acronym>s form a proper subset of generic <acronym title="Uniform Resource Identifier">URI</acronym>s, the generous constraints on their syntax are carried forward with little to no modification.</p>
    <p>Despite being an eminently flexible protocol, <acronym title="Hypertext Transfer Protocol">HTTP</acronym> was designed with a <a href="rest-compliance-and-best-practices" title="REST Compliance and Best Practices" rel="dct:references">specific type of interaction</a> in mind. The generic <acronym title="Uniform Resource Identifier">URI</acronym> syntax allows constructs that imply meanings that are either inconsistent with the goals of the protocol, or that are just plain hard to use. Therefore, in the interest of <a href="../lexicon/conceptual-integrity" title="Conceptual integrity" rel="dct:references">conceptual integrity</a>, it makes sense to further constrain the syntax of <acronym title="Hypertext Transfer Protocol">HTTP</acronym> <acronym title="Uniform Resource Locator">URL</acronym>s to promote interaction that is both efficient and effective.</p>
    <p>This section proposes additional constraints in the following areas:</p>
    <ul>
      <li><a href="domain-name-recommendations" title="Domain Name Recommendations" rel="dct:references">Domain Name Recommendations</a></li>
      <li><a href="hyphen-vs-underscore" title="Hyphen vs. Underscore" rel="dct:references">Hyphen vs. Underscore</a></li>
      <li><a href="other-non-alpha-numeric-characters-in-http-urls" title="Other Non-Alpha-Numeric Characters in HTTP URLs" rel="dct:references">Other Non-Alpha-Numeric Characters in <acronym title="Hypertext Transfer Protocol">HTTP</acronym> <acronym title="Uniform Resource Locator">URL</acronym>s</a></li>
      <li><a href="http-url-path-syntax-constraints" title="HTTP URL Path Syntax Constraints" rel="dct:references"><acronym title="Hypertext Transfer Protocol">HTTP</acronym> <acronym title="Uniform Resource Locator">URL</acronym> Path Syntax Constraints</a></li>
      <li><a href="http-url-query-string-syntax-constraints" title="HTTP URL Query String Syntax Constraints" rel="dct:references"><acronym title="Hypertext Transfer Protocol">HTTP</acronym> <acronym title="Uniform Resource Locator">URL</acronym> Query String Syntax Constraints</a></li>
    </ul>
  </body>
</html>
