Перепишите все запросы, чтобы не требовалось расширение .php с помощью mod_rewrite RewriteRule

Мне бы хотелось, чтобы все запросы понравились

http://mysite.com/something/otherthing?foo=bar&x=y 

переписываться как

 http://mysite.com/something/otherthing.php?foo=bar&x=y 

Другими словами, просто сделайте расширение .php необязательным, универсальным.

Я бы сделал это так. В принципе, если файл не существует, попробуйте добавить к нему .php.

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

Если вы можете изменить httpd.conf и что хотите, вы также можете поставить:

 ForceType application/x-httpd-php 

в файле, так как он заставит все пути, называемые файлами PHP. Я думаю, что это также работает с строками запроса.

Это работает:

 RewriteCond %{QUERY_STRING} ^.+$ RewriteRule ^/?([^/\.]+)$ /$1.php [L] 

Идея состоит в том, чтобы убедиться, что есть строка запроса (вопросительный знак плюс материал), и если да, проверьте, нет ли материала перед вопросительным знаком без расширения, и если да, добавьте .php.

Что-то вроде…

 RewriteRule /something/(.+)?(.+) /something/$1.php?$2 

вероятно, будет работать.

Совпадает только с путями без расширения:

 RewriteRule ^(([^/]+/+)*[^\.]+)$ $1.php 

Изменить. В моем тестировании строка запроса передается автоматически. Если это не так, вы можете использовать это вместо:

 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^(([^/]+/+)*[^\.]+)$ $1.php?%1