| 12345678910111213141516171819202122232425262728 |
- Options -Indexes
- DirectoryIndex index.php
- RewriteEngine On
- RewriteBase /
- # ── Allow .well-known for SSL/ACME challenges ──────────────────────────────
- RewriteRule ^\.well-known/ - [L]
- # ── Block all other dotfiles ───────────────────────────────────────────────
- RewriteRule (?:^|/)\. - [F,L]
- # ── www → non-www (301) ────────────────────────────────────────────────────
- RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
- RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
- # ── Strip .php from the address bar (GET/HEAD only — POST submissions kept) ─
- # e.g. /login/login.php → /login/login
- RewriteCond %{REQUEST_METHOD} ^(GET|HEAD)$
- RewriteCond %{THE_REQUEST} \s/+(.*?)\.php[\s?]
- RewriteRule ^ /%2 [R=301,L,QSA]
- # ── Serve extensionless URLs by mapping to the matching .php file ──────────
- # e.g. /login/login → /login/login.php (internal, URL stays clean)
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME}\.php -f
- RewriteRule ^(.+?)/?$ $1.php [L]
|