Mi piacerebbe avere tutte le domande come
http://mysite.com/something/otherthing?foo=bar&x=y
essere riscritto come
http://mysite.com/something/otherthing.php?foo=bar&x=y
In altre parole, basta rendere l'estensione .php opzionale, universalmente.
Lo farei in questo modo. Fondamentalmente, se il file non esiste, prova ad aggiungere .php.
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ $1.php [QSA,L]
Se puoi cambiare httpd.conf e cosa fare, puoi anche inserire:
ForceType application/x-httpd-php
nel file in quanto impone tutti i routes chiamati a essere file PHP. Penso che questo funzioni anche con le stringhe di query.
Questo funziona:
RewriteCond %{QUERY_STRING} ^.+$ RewriteRule ^/?([^/\.]+)$ /$1.php [L]
L'idea è di assicurarsi che ci sia una string di query (punto interrogativo più materiale) e in tal caso controllare se la roba prima del punto interrogativo non ha estensione e, in tal caso, aggiungere .php.
Qualcosa di simile a…
RewriteRule /something/(.+)?(.+) /something/$1.php?$2
probabilmente functionrebbe
Trova solo routes senza estensione:
RewriteRule ^(([^/]+/+)*[^\.]+)$ $1.php
Modifica: nei miei test, la string di query viene passata automaticamente. Se non lo fa, puoi usare questo invece:
RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^(([^/]+/+)*[^\.]+)$ $1.php?%1