CINXE.COM

PURL help

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>PURL help</title> <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css"> <link rel="stylesheet" href="/static/style.css"> <style>table#footer td { padding: 5px; }</style> </head> <style> img { border: 1px solid black; } </style> <body> <div class="modal fade" id="loginModal" tabindex="-1" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">&times;<span class="sr-only">Close</span></button> <h4 class="modal-title">User login is handled by the Internet Archive</h4> </div> <div class="modal-body">You will be returned to this page after login.</div> <div class="modal-footer"> <a href="https://archive.org/account/login?referer=http%3A//purl.archive.org/help" class="btn btn-primary">Login to the Internet Archive</a> <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> </form> </div> </div> </div> </div> <div class="modal fade" id="signupModal" tabindex="-1" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">&times;<span class="sr-only">Close</span></button> <h4 class="modal-title">User registration is handled by the Internet Archive</h4> </div> <div class="modal-body"> <ol> <li>Complete the Internet Archive user registration.</li> <li>Come back to <a href="/?external=True">https://purl.archive.org/</a></li> </ol> </div> <div class="modal-footer"> <a href="https://archive.org/account/signup" class="btn btn-primary">Sign up at the Internet Archive</a> <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> </form> </div> </div> </div> </div> <nav class="navbar navbar-default"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="/">PURL Administration</a> </div> <div id="navbar" class="navbar-collapse collapse"> <ul class="nav navbar-nav navbar-left"> <li><a href="/help">help</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="#" role="button" data-toggle="modal" data-target="#loginModal">login</a> <li><a href="#" role="button" data-toggle="modal" data-target="#signupModal">sign up</a> </ul> <form action="/domain_search" class="navbar-form navbar-right" role="search"> <div class="form-group"> <input type="text" name="q" class="form-control" placeholder="PURL domain"> </div> <button type="submit" class="btn btn-default">search</button> </form> </div> </div> </nav> <div class="container"> <h1>PURL help</h1> <ol class="breadcrumb"> <li><a href="/">Home</a></li> <li class="active">Help</li> </ol> <h2>What is a PURL?</h2> <p>A PURL is a persistent URL, it provides a permanent address to access a resource on the web. When a user retrieves a PURL they will be redirected to the current location of the resource. When an author needs to move a page they can update the PURL to point to the new location.</p> <p>PURLs with a common prefix are grouped together into domains. Each domain has a single maintainer who can add new PURLs to the domain and make changes to existing PURLs within the domain.</p> <h2 id="purl_types">PURL types</h2> <p>Each PURL has a target and status code or type. The target specifies where the PURL redirects to. The type is a status code from HTTP specification. The default PURL type is "302 Found", meaning that the object of the request was found elsewhere. This is the status code that should be used if there is not a reason to use a different one.</p> <p>A partial PURL is a special type which will match the beginning of a URL. The PURL resolver will match as much of a PURL as it can and append the remainder to the end of the resolved URL. This reduces the need to create multiple PURLs to handle all of the resources that share a common location. For more on partials, see the section below the following table.</p> <p>For more information, Wikipedia has <a href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_redirection"> brief summary of HTTP Status Codes</a> and their meanings. For more much more detailed information, see the <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-redirection-3xx">redirection section of RFC 9110</a>.</p> <p><table class="table table-hover" summary="Table of PURL Types"> <tbody> <tr> <th>PURL Type</th> <th>Meaning</th> <th>HTTP Shorthand</th> </tr> <tr> <td>301</td> <td>Moved permanently to a target URL</td> <td>Moved Permanently</td> </tr> <tr> <td>302</td> <td>Simple redirection to a target URL</td> <td>Found</td> </tr> <tr> <td>303</td> <td>See other URLs (use for Semantic Web resources)</td> <td>See Other</td> </tr> <tr> <td>307</td> <td>Temporary redirect to a target URL</td> <td>Temporary Redirect</td> </tr> <tr> <td>404</td> <td>Temporarily gone</td> <td>Not Found</td> </tr> <tr> <td>410</td> <td>Permanently gone</td> <td>Gone</td> </tr> </tbody> </table></p> <h3 id="partials">Partial types and name resolution</h3> As mentioned above, partials are a special type that only have meaning within the PURL service. They are not a standard. Though they can reduce the need to create many PURLs, they can also be a bit confusing as they can act a bit like wildcard forwarders. At a high level, PURLs are resolved as follows: <ol> <li>a patron visits https://purl.archive.org/some/path/to/a/purl;</li> <li> the PURL service determines the correct domain to use within the patron-entered path; </li> <li> within that domain, a search is performed for a matching PURL according to the following logic: </li> <ol> <li> if there is an exact match based on the PURL's "name" field, that PURL will be used and patron forwarded to the "target" of that PURL. </li> <li> next there's a check for a case insensitive match, and if one is found, then the PURL with the first case insensitive match is used; </li> <li> finally, if there's a partial type that matches, the PURL with the longest partial type "name" field is used. </li> </ol> </ol> To help visualize this, consider the following example: <table class="table"> <thead> <tr> <th>name</th> <th>type</th> <th>target</th> <th>created</th> </tr> </thead> <tbody> <tr> <td> <a href="/purl/example-domain">/example-domain</a> </td> <td class="text-nowrap">302 Found</td> <td>http://example.org/a-domain-can-be-a-purl-too</td> <td>2024-05-07 23:34:38</td> </tr> <tr> <td> <a href="/purl/example-domain/partial">/example-domain/partial</a> </td> <td class="text-nowrap">partial </td> <td>http://example.org/partial</td> <td>2024-05-07 23:34:55</td> </tr> <tr> <td> <a href="/purl/example-domain/partial/something/specific">/example-domain/partial/something/specific</a> </td> <td class="text-nowrap">302 Found</td> <td>http://example.org/this-does-not-forward-to-the-partial-namespace</td> <td>2024-05-07 23:37:59</td> </tr> <tr> <td> <a href="/purl/example-domain/partial/crazy/nested/partial">/example-domain/partial/crazy/nested/partial</a> </td> <td class="text-nowrap">partial </td> <td>http://example.org/nested-partial/destination</td> <td>2024-05-07 23:38:50</td> </tr> </tbody> </table> In the above example domain, the following would be true: <ol> <li> <a href="https://purl.archive.org/example-domain">https://purl.archive.org/example-domain</a> would forward only to http://example.org/a-domain-can-be-a-purl-too. </li> <li> <a href="https://purl.archive.org/example-domain/partial"> https://purl.archive.org/example-domain/partial </a> would forward to http://example.org/partial, but it would also forward anything after the name of our partial, which here is named "partial". Partials can be named anything. Only the type matters. </li> <li> <a href="https://purl.archive.org/example-domain/partial/123"> https://purl.archive.org/example-domain/partial/123 </a> is an example of this, and would forward to http://example.org/partial/123, because "123" was added to the end of the partial. </li> <li> <a href="https://purl.archive.org/example-domain/partial/this/is/weird"> https://purl.archive.org/example-domain/partial/this/is/weird </a> would forward to http://example.org/partial/this/is/weird for the same reason. </li> <li> <a href="https://purl.archive.org/example-domain/partial/something/specific"> https://purl.archive.org/example-domain/partial/something/specific </a> isn't treated as a partial, even though this occurs within the "example-domain/partial" namespace. It is an exact match of a PURL with a 302 redirect and would be treated as such. Therefore it would forward only to http://example.org/this-does-not-forward-to-the-partial-namespace, and the partial would not come into play at all. </li> <li> <a href="https://purl.archive.org/example-domain/partial/crazy/nested/partial/file5.tar.gz"> https://purl.archive.org/example-domain/partial/crazy/nested/partial/file5.tar.gz </a> is a nested partial, and because it is longer than https://purl.archive.org/example-domain/partial, it would be matched first, so this would go to http://example.org/nested-partial/destination/file5.tar.gz. </li> </ol> <h2 id="claim">Claiming a PURL domain</h2> <p>The PURL service is now administered by the <a href="https://archive.org/">Internet Archive</a>. If you have any difficulty making changes to your PURLs please contact info@archive.org for assistance.</p> <h2 id="admin">Administering PURLs</h2> <p>The PURL system is a service of the Internet Archive. To make changes to a PURL users need to have a user account with the Internet Archive.</p> <h3>Search for a PURL</h3> <p>PURLs are grouped into domains, domains can be searched from the home page.</p> <div><img src="/static/img/screenshot/domain_search.png" /></div> <p>The domain search shows a list of domains that match the search criteria. Each domain links to a domain details page.</p> <h3>Viewing the contents of a PURL domain</h3> <p>The domain details page displays the list of PURLs within the domain. This includes the name, redirect type and target for each PURL.</p> There is a form that can be used to add new PURLs.</p> <div><img src="/static/img/screenshot/domain.png"/></div> <div><img src="/static/img/screenshot/purl.png"/></div> <p>Every PURL has a page that shows information about the PURL including the revision history. There is a link to the edit page.</p> <div><img src="/static/img/screenshot/purl_edit.png"/></div> <p>Users can edit the type of PURL and the target URL.</p> <h3>Version</h3> <p>This is version 1.2.3.</p> <div class="row"> <div class="col-md-12"> <p>&nbsp;</p> <table id="footer"> <tr> <td><img src="/static/img/logo_IA-sm.png"/></td> <td>The PURL service is an initiative of the <a href="https://archive.org">Internet Archive</a>, a 501(c)(3) non-profit,<br> building a digital library of Internet sites and other cultural artifacts in digital form.<br> For help and assistance please email info@archive.org.</td> </tr> </table> </div> </div> </div> <script src="/static/jquery/jquery.js"></script> <script src="/static/bootstrap/js/bootstrap.js"></script> <script src="/static/app.js"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10