Во-первых, помните, чтобы поставить эту строку в ваш .htaccess
перед любыми переписывает:
RewriteEngine on
Если вы хотите site.com/something
для отображения site.com/something.php
, если она существует без изменения URL, выполните следующие действия:
RewriteCond %{REQUEST_URI}.php -f
RewriteRule .* %{REQUEST_URI}.php
Это отобразит [файл, который вы запросили] .php, если он существует, пока отображается тот же URL, который вы указали. Если файл php не существует, он все равно даст вам 404, как и следовало бы. (Вот что такое -f
.)
Невозможно полностью скрыть запросы GET. Вы можете избавиться от запросов GET, но тогда они не будут доступны для вашего скрипта, и нет смысла. Однако вы можете сделать это лучше. Например, если вы хотите site.com/userpage/item/30
, чтобы отобразить содержимое site.com/userpage.php?item=30
, вы можете сделать что-то вроде этого:
RewriteRule ^/userpage/item/(.*)$ userpage.php?item=$1
Вы также мог бы заставить его работать с любым значением GET с помощью следующего правила:
RewriteRule ^/userpage/(.*)/(.*)$ userpage.php?$1=$2
Таким образом, вы можете получить доступ к site.com/userpage.php?query=yes
вместо site.com/userpage/query/yes
. Это в значительной степени лучшее, что вы можете сделать; Значения GET должны поступать из URL-адреса, поэтому, если вы хотите, чтобы ваши входы полностью скрыты, вам придется использовать POST вместо этого.