Строка запроса htaccess с QSA

Я пытаюсь установить общее правило в htaccess для удаления расширения.php и ссылок, используя различные строки запроса, такие как

domainname.com/welcome.php?user=normal&type=free&uid=100
domainname.com/welcome.php?user=normal
domainname.com/welcome.php?log=new&theme=red

И ожидаемые ссылки, такие как

domainname.com/welcome?user=normal&type=free&uid=100
domainname.com/welcome?user=normal
domainname.com/welcome?log=new&theme=red

Набор правил в файле htaccess, например:

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/welcome/$ $1/welcome.php? [QSA,NC,L]

Но кое как не работает. Я делаю что-то неправильно.

2 ответа

Решение

Попробуйте это в файле.htaccess в корневом каталоге:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI}  !welcome\.php [NC]
RewriteRule ^welcome/?  /welcome.php      [NC,L]

Строка запроса будет передана автоматически.

Ваши правила в вашем ответе и в вашем комментарии неупорядочены. Если ты хочешь /$dynamic переписать в /$dynamic.php со строкой запроса, вы должны попробовать этот код:

Options+ FollowSymlinks
RewriteEngine on

RewriteCond %{REQUEST_URI} ^/([a-z0-9-_]+)/?$
RewriteRule ^(.*) /%1.php [QSA]

Четное /index1, /index2, /index3, /etc будет переписан

Другие вопросы по тегам