Remove File Extension for Page Outside of WordPress

…but that still didn’t remove the extension.

To be clear, the extension should already be removed in the HTML anchor/link. The purpose of .htaccess is primarily to rewrite the extensionless URL back to the underlying filesystem path (which contains the file extension).

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Apart from rewriting to .php, not .html (as stated), this is far too generic. You only appear to have 1 URL that needs to be rewritten, but this rewrites everything that doesn’t contain a dot – which probably includes all your WordPress URLs as well!

This will also fail if the requested URL ends in a trailing slash – as in your example.

Bit of an aside, but… the preceding condition (that checks that the request does not map to a file) is most probably unnecessary here anyway, since you are only matching requests that do not contain a dot (ie. do not contain a file extension) – it is unlikely that a URL without a “file extension” maps directly to a file on the filesystem. (This would mean you have files without file extensions – which is generally a bad idea.)

So, providing you are already linking to https://example.com/apple-app-site-association/ (as stated – with a trailing slash) then add the following before the WordPress front-controller:

Options -MultiViews

# Rewrite "/url/" to "/url.html"
RewriteRule ^(apple-app-site-association)/$ $1.html [L]

# BEGIN WordPress
:

The $1 backreference is simply to save repetition.

There is no need to repeat the RewriteEngine directive (since this is already included in the WordPress block below – the order does not matter). Include the Options directive to disable MultiViews if not already.


UPDATE: If the file really is “plaintext” (and “can’t have any HTML on it”) as you say, then why not use the .txt extension instead of .html? By using .html, Apache will send a mime-type of text/html, as opposed to text/plain (as with a .txt extension), which would seem to be the desired outcome? Browsers also format text/plain documents differently by default using a monospaced font.