Строка запроса 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
будет переписан