отслеживание URL через .htaccess - PullRequest
0 голосов
/ 11 августа 2010

поэтому я прочитал материал о том, как 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 ]

0 голосов
/ 12 августа 2010

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

0 голосов
/ 11 августа 2010

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

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

Options Indexes FollowSymLinks Includes MultiViews

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

...