htaccess удалить .php и сохранить строку запроса

Вот мой .htaccess файл прямо сейчас.

RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ $1.php [NC,L,QSA] 

Это работает в том, что он делает мои страницы доступными, если вы не используете расширение .php.

 Old = domain.com/test.php New = domain.com/test 

Плохо то, что когда я отправляю данные по следующей ссылке, данные не передаются. Я думал, что вариант QSA сделал это, а что сделка?

 domain.com/test?id=1 

Соответствие всей строки запроса и добавление ее к новому URL-адресу с использованием обратной ссылки должно работать.

 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^(.*)$ $1.php?%1 [NC,L,QSA] 

Если вы передаете id вы должны использовать этот код

 Options +FollowSymLinks RewriteEngine on RewriteRule ^test/(.*)$ /test.php?id=$1 

теперь вы можете получить доступ

 domain.com/test?id=1 

из

 domain.com/test/1 

Вот более простое решение. Мы используем его в нашем командном проекте. Он будет работать не только в корне, но и в любом каталоге вашего сайта.

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php