Modern browsers, mobile operating systems, password managers, calendar clients, mail servers and security researchers all expect to find small standardised files at fixed URLs on your domain:
/robots.txt,/.well-known/security.txt,/.well-known/assetlinks.json,/.well-known/change-passwordand a dozen more.
They are defined by RFC 8615 and its companions.Publishing them normally means editing files on the backend web server
A server you may not own, may not be allowed to touch, or which is a black-box appliance.
Well-known files & robots.txt lets the reverse proxy answer those URLs itself, per website, from the Artica web console.
The feature is an editor of standard responses, not a file manager. For each website rule you enable one or more entries from a fixed catalogue of 15 resources. Artica then renders the content to disk, generates one exact per enabled entry, validates the whole configuration, and only then publishes it.
Three properties are worth understanding before you enable anything.
200 when the backend answers 404 Crawlers, mobile operating systems and security scanners request these URLs constantly, whether or not you publish them.
On a site that does not, every one of those requests becomes a 404 in your logs — noise that hides the 404s you actually care about.
Artica removes that noise without taking anything away from your application.
For each resource you leave disabled, it emits a location that still proxies to your backend, and replaces only its 404 with an empty 200
| Situation | What the client receives |
|---|---|
| The resource is enabled in Artica | The document you configured |
| Disabled, and your backend serves the URL | Your backend's own answer, untouched |
| Disabled, and your backend answers 404 | 200 with an empty body |
| Your backend is down (502, 504) | The error, unchanged |
404 is replaced. 502 or 504 passes through untouched: 200 would hide the incident instead of reporting it.
For the same reason the three redirect entries (change-password, caldav, carddav) get no fallback.
A client asking for them expects a Location header, and an empty 200 would tell it the resource exists and is empty.
The fallback applies to reverse-proxy websites that have a real backend.
A static HTML site or a blackhole rule has nothing to defer to, so nothing is emitted for them.
security.txt to it is a change request; adding it here is two minutes.security.txt must carry a Contact: field. An MTA-STS policy must declare a valid version, mode and max_age. Content-Type, which is harder than it looks./.well-known/host-meta.json must be served as application/jrd+json, not application/json./.well-known/apple-app-site-association has no file extension at all. /.well-known/security.txt before they try to reach you any other way. /.well-known/assetlinks.json and Apple Universal Links need /.well-known/apple-app-site-association, /.well-known/change-password as a redirect to your account page./.well-known/caldav and /.well-known/carddav on the domain and expect a redirect to the real service path. robots.txt inside the application image./.well-known/openid-configuration, /.well-known/oauth-authorization-server) Content-Type are read-only: Two buttons help before you commit:
Cache-Controlis optional.
Left empty, no cache header is added. Do not put a long lifetime onsecurity.txtor on OAuth metadata: you want to be able to correct them quickly.
Enabling a resource takes the URL away from your application.
The modal says so on every entry. It matters most for openid-configuration, webfinger, assetlinks.json and robots.txt, which a modern application may already generate dynamically.
When in doubt, request the URL first and see whether your backend already answers it.
Three entries are redirects rather than documents: change-password, caldav and carddav.
They ask for a target and an HTTP status instead of content.
The target may be a local path (/account/change-password) or an absolute http:// or https:// URL.
Anything else is refused — including any value containing a control character, which is how header-injection attempts are blocked.
Allowed statuses are 301, 302, 303, 307 and 308; 302 is the sensible default.
robots.txt opens its own editor with four tabs.
Cache-Control.User-agent groups
Each group targets one user-agent and holds its own directives.
The Rules column shows how many it contains; the arrows change the order in which groups are rendered.
Inside a group you may use Allow, Disallow and Crawl-delay.
Note that
Crawl-delayis not universally supported — several major crawlers ignore it.
Global directives (Sitemap, and the non-standardHost) live in their own tab and are rendered after the groups.
SeveralSitemapentries are allowed.
Preview
The preview is produced by the same renderer that writes the published file, so what you read here is exactly what crawlers will receive.
The engine is deliberately neutral.
It never adds a directive you did not configure, and never emits Disallow: / on its own.
A group with no active rule is omitted rather than rendered as an empty User-agent block, which some parsers attach to the next group.
/.well-known/openid-configuration itself, leaving the entry disabled is the right choice.resource or rel query parameters, leave that entry disabled./.well-known/mta-sts.txt is only half the job: mta-sts. subdomain and requires the _mta-sts DNS record. Expires: date in security.txt. Disallow to protect a private path — use authentication, or the reverse proxy URL filters.