Как удалить имя переменной из URL с помощью htaccess? - PullRequest
0 голосов
/ 05 июля 2010

Поэтому я хочу, чтобы пользователи могли заходить на мой веб-сайт с URL-адресом, подобным /45678, вместо того, чтобы использовать /?p=45678, поэтому я просто хочу удалить имя переменной.Я пытался использовать mod_rewrite, но, похоже, это только для удаления имени при посещении страницы.

Вот текущий код:

RewriteEngine On 

RewriteCond %{QUERY_STRING} ^p=([0-9]+=$

RewriteRule ^/$ /%1 [R]

Ответы [ 3 ]

0 голосов
/ 05 июля 2010

Правильно ли вы настроили mod_rewrite? Если это так, вы можете использовать переменные, такие как простые $_GET переменные, в этом случае вы должны получить доступ к $_GET['p'] в PHP.

0 голосов
/ 06 июля 2010

Я сделал это без использования .htaccess, но он запрашивает базу данных.Я написал это некоторое время назад, так что он использует PEAR DB, приспособиться к вашей базе данных / метод подключения.Я просто скопирую свой код и позволю вам выяснить, какие изменения вам нужны.

$db=connect_db();
$name=substr($_SERVER['PHP_SELF'], 20);
$name=strtolower($name);
$id=$db->getone("select id from user where login='{$name}'");
header("Location: /dragonart/profile?user=" . $id);

Если вы храните вашу информацию в базе данных, это может быть хорошей альтернативой.Недостатком является то, что URL не переписывается, и пользователь в конечном итоге отправляется на страницу, заканчивающуюся переменной $ _GET.

edit:
Только что понял, что при использовании моего метода можно использовать более простой методза ответ.Поскольку мое решение использовалось для нахождения идентификатора пользователя с использованием его имени пользователя и последующей отправки кого-либо в его профиль (для которого требуется идентификатор), лучшим решением будет что-то вроде:

$var=substr($_SERVER['PHP_SELF'], $length);  
header("Location: /path/to/page?p=".$var);

, где $ length - этообычная длина URL без переменной в конце.

0 голосов
/ 05 июля 2010

Просто измените все ваши ссылки на / 45678 вместо? P = 45678.Или я вас неправильно понял?Потому что я получил из вашего поста то, что он работает правильно, если только вы вручную не обращаетесь к? P = 45678, где он остается как? P = 45678.

РЕДАКТИРОВАТЬ:
Этоэто то, что я использую для http://www.madphp.org/dev/,, попробуйте, работает как талисман для меня (он также удаляет часть index.php).Чтобы получить доступ к своему теперь более чистому URL, вы просто взяли бы переменную $_SERVER['PATH_INFO'], чтобы получить все необходимые параметры в вашем PHP-скрипте.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...