Я хочу удалить вопросительный знак & .php расширение из url, используя .htaccess

У меня проблема с URL-адресом перенаправления в .htaccess. Я хочу удалить .php и вопросительные знаки из URL.

Например: www.example.com/test.php?id=12 to www.example.com/test/12 нужен такой формат.

Я попытался использовать этот код в моем .htaccess

Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / ## don't touch /forum URIs RewriteRule ^forums/ - [L,NC] ## hide .php extension snippet # To externally redirect /dir/foo.php to /dir/foo RewriteCond %{THE_REQUEST} ^[AZ]{3,}\s([^.]+)\.php [NC] RewriteRule ^ %1 [R,L] # To internally forward /dir/foo to /dir/foo.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*?)/?$ $1.php [L] 

Этот код просто удаляет расширение .php из URL. Также необходимо удалить вопросительный знак.

Этот код, похоже, из одного из моих ответов 🙂

Замените код следующим:

 Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / ## don't touch /forum URIs RewriteRule ^forums/ - [L,NC] ## hide .php extension snippet # To externally redirect /dir/foo.php?id=123 to /dir/foo RewriteCond %{THE_REQUEST} ^GET\s([^.]+)\.php\?id=([^&\s]+) [NC] RewriteRule ^ %1/%2? [R,L] # To internally forward /dir/foo/12 to /dir/foo.php?id=12 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.+?)/([^/]+)/?$ $1.php?id=$2 [L,QSA] # To externally redirect /dir/foo.php to /dir/foo RewriteCond %{THE_REQUEST} ^GET\s([^.]+)\.php\s [NC] RewriteRule ^ %1 [R,L] # To internally forward /dir/foo to /dir/foo.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteCond %{QUERY_STRING} ^$ RewriteRule ^(.*?)/?$ $1.php [L] 

Как насчет этого? Для этого требуется mod_rewrite .

 RewriteEngine On RewriteRule ^test\/([0-9]+)$ test.php?id=$1