Перенаправление PHP и htaccess: переписать yoursite.com/user.php?username=xyz на yoursite.com/xyz - PullRequest
2 голосов
/ 16 июля 2009

допустим, я хочу использовать .htaccess, чтобы переписать следующее.

Перезапись /user.php?username=xyz до /xyz.

Я бы использовал:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1

Проблема в том, как только это будет сделано, как мне получить доступ к имени пользователя в других моих ссылках?

так /mike/details.php

Как получить значение имени пользователя ('mike'), которое будет автоматически добавлено к URL-адресу, чтобы оно выглядело следующим образом: /username/details.php?username=mike

Что мне нужно изменить в .htaccess, чтобы получить это значение? Или мне нужно сделать это в скрипте PHP, чтобы разобрать URL?

Спасибо

Ответы [ 3 ]

1 голос
/ 16 июля 2010

попробуйте это:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ user.php?username=$1 [L,QSA]
0 голосов
/ 12 октября 2009

Это будет совпадать с другими правилами на сайте и начинается с anytext. как сказать ^abc

0 голосов
/ 16 июля 2009

Я думаю, что передача имени пользователя в качестве параметра строки запроса не является хорошим решением.

Итак, сделайте так, чтобы пользовательские данные были сохранены в сеансе (на стороне сервера), и пусть механизм сеанса извлекает их с помощью идентификатора сеанса (передаваемого через куки или GET, это не имеет значения)

Ваше правило перезаписи может по-прежнему перенаправлять на user.php, устанавливая параметр username, но затем user.php будет хранить имя пользователя и его данные в сеансе ... с этого момента каждый другой скрипт php, который получить доступ к контейнеру $ _SESSION (вызывая session_start ()) может легко получить все данные, связанные с пользователем, которые ему нужны

Мои 2 цента:)

...