У меня есть папка с именем people на моем сервере и index.php в этой папке
Мой URL похож mydomain.com/people/?name=value1&возраст = значение2
Но я очень хочу, чтобы это выглядело как mydomain.com/people?name=value1&возраст = значение2
Поскольку «people» — это папка, а ваш сценарий находится в этой папке, единственный способ для этого — если вы выключите DirectoryIndex
, который автоматически перенаправляет браузер, чтобы включить косую черту для любого запроса, который относится к папке.
Обратите внимание, это это косая черта, URI заканчивается на /people/
, ?
и все после него — строка запроса.
Выключение DirectoryIndex
может быть очень опасным, так как используется для предотвращения раскрытия информации. Без косой черты в ваших папках, запрос папки приведет к отображению содержимого этой папки даже если у вас есть индекс каталога. Другими словами, index.php
игнорируется, и вместо этого вы получаете список всего содержимого вашей папки. Таким образом, чтобы этого не случилось, вы должны внутренне добавить косую черту обратно.
Так что-то вроде этого в файле htaccess корня вашего документа:
DirectoryIndex Off
RewriteEngine On
RewriteCond %{THE_REQUEST} \ /+people/\?
RewriteRule ^ /people [L,R]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])$ /$1/ [L]
С помощью mod_rewrite
Вы можете сделать это так:
RewriteEngine On
RewriteRule ^(.+)/$ $1 [L,R,QSA]
QSA
здесь не требуется, так как он означает Query String Append и включен по умолчанию.