Отслеживание URL через.htaccess

Поэтому я прочитал материал о том, как apache mod_rewrite добивается цели, но он кажется слишком расплывчатым для начинающих, как я.

скажем, я хотел замаскировать site.com/userpage.php на site.com/ или site.com/userpage

или даже удаление запросов на получение..

с site.com/userpage.php?query=yes на site.com/userpage.php или site.com/userpage

Как я могу сделать это, используя htaccess или даже другие методы?

Спасибо, парни

2 ответа

Решение

Во-первых, не забудьте поместить эту строку в свой .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.

Если вы не хотите добавлять запросы GET, почему бы не использовать POST?

Кроме того, вы можете использовать MultiViews, чтобы разрешить доступ к /userpage.php как / userpage.

Options Indexes FollowSymLinks Includes MultiViews

Как работает MultiViews, он проверит каталог с именем userpage, и если он не найдет ни одного, то он перейдет к файлу, просто в случае, если у вас есть каталог с именем userpage.

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