У меня проблема с 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