This repository holds the website source code for https://w3id.org/, a secure, permanent URL redirection service run by the W3C Permanent Identifier Community Group.
Applications that deal with Linked Data need URLs that stay stable for decades. This service operates like a switchboard: it connects a request for an identifier to wherever that information currently lives, and it can be reconfigured when the information moves.
That is where everything lives — what the service is and is not for, how to
create and maintain an identifier, how to write and test .htaccess rules, and
a catalogue of the mistakes that most often send a pull request back.
| New here? | docs/overview/index.md |
| Creating an identifier | docs/guides/create-an-id.md |
| Updating an existing one | docs/guides/maintain-an-id.md |
Writing .htaccess rules |
docs/guides/htaccess.md |
| Testing your changes | docs/guides/testing.md |
| Running Apache locally | docs/guides/local-server.md |
| Rules and common mistakes | docs/rules/index.md |
| FAQ | docs/faq.md |
| Announcements | https://w3id.org/docs/news/ |
AI coding agents should start with AGENTS.md.
- Fork this repository on GitHub.
- Create
ids/<your-id>/.htaccesscontaining your redirect rules and your contact details, including a GitHub username. - Test it, then open a pull request.
A minimal identifier is just this:
# # /my-project/
#
# https://w3id.org/my-project/ redirects to https://example.org/
#
# ## Contact
# This space is administered by:
#
# Firstname Lastname
# firstname@example.org
# GitHub username: exampleuser
RewriteEngine on
RewriteRule ^(.*)$ https://example.org/$1 [R=302,L]Please read Creating an identifier before opening a pull request. In particular:
- This service redirects; it does not host files. Do not commit ontologies, schemas, contexts, or documentation to this repository.
- Only change your own directory under
ids/. - Test your changes. A syntax error in
.htaccessreturns a 500 for every URL in that directory.
You can also request a redirect by email — see the FAQ.
Every pull request is checked automatically. Anything that needs fixing appears as a comment on the changed lines under Files changed, with the full report under Checks, and each finding links to the rule explaining what to do.
Run the same checks yourself first. They report only what your own change is responsible for, and they count work you have not committed yet:
(cd tools/check && npm ci) # once
node tools/check/bin/w3id-check.jsTo look at one directory, name it:
node tools/check/bin/w3id-check.js ids/my-projectSee tools/check/README.md for the full set of
options and how to add a check, and
docs/rules/index.md for the rules themselves.
A clean run is not the whole job: nothing can tell whether your redirect points where you meant it to. See Testing your changes, and Running Apache locally for a server that applies your rules the way the service does.
Note
Adding or updating an identifier requires no build step. The checker in
tools/check/ is optional — pull requests are checked automatically — and
the tooling in docs/ is only for people editing the documentation site.
| Path | |
|---|---|
ids/ |
The document root. One directory per identifier. |
ids/<id>/.htaccess |
Redirect rules for that identifier. |
ids/<id>/README.md |
Identifier and maintainer information. Optional. |
docs/ |
Source for https://docs.w3id.org/, built with VitePress. |
docs/news/ |
Announcements about the service, with RSS and Atom feeds. |
tools/check/ |
The automated contribution checks. |
tools/server/ |
A local Apache that serves ids/ the way the service does. |
AGENTS.md |
Instructions for AI coding agents. |
The service is operated by a consortium of organisations that have pledged responsibility for keeping it running:
- Digital Bazaar
- 3 Round Stones
- OpenLink Software
- Applied Testing and Technology
- Bosatsu Consulting
- KurrawongAI
See the documentation for how this works and how to join.
Discussion happens on the public-perma-id@w3.org mailing list. For problems with a specific identifier, use the issue tracker.
The letters 'w3' in the domain name for this site stand for "World Wide Web". Other than hosting the software for the Permanent Identifier Community Group, the "World Wide Web Consortium" (W3C) is not involved in the support or management of this website in any way.