Как получить как твиттер URL - PullRequest
0 голосов
/ 08 марта 2010

Мне нужна простая помощь ... У меня есть такой URL: example.com/profile.php?id= & name =

мой файл .htaccess вот так.

RewriteRule ^ профиль /(.) / (. )

так что у меня есть конечный URL, как это: example.com/profile/id/name

я могу сделать example.com/id

но как я могу получить URL, как это:

example.com / имя

??

Thax

Ответы [ 3 ]

1 голос
/ 08 марта 2010

Ваше правило перезаписи слегка ошибочно.Ваша будет выбирать только один символ в каждой части в скобках.Если вы поставите * после каждой точки, она вместо этого выберет один или несколько символов, которые, я думаю, вам нужны.

RewriteRule ^profile/(.*)/(.*) profile.php?id=$1&name=$2
1 голос
/ 08 марта 2010

Очевидно, ваш скрипт profile.php ожидает две переменные GET, а у вашего желаемого URL есть только одна. Поэтому вам, вероятно, придется изменить и сценарий, и схему базы данных.

0 голосов
/ 08 марта 2010

Если вы ищете именно это:

example.com / имя

Вам потребуется изменить файл profile.php, чтобы он ожидал только переменную name, и использовать ее для запроса к базе данных.

Я думаю, что раньше у вас было что-то вроде:

mysql_query("SELECT * from table where id=$id");

Вам нужно будет изменить его на

mysql_query("SELECT * from table where name$name");

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

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

Twitter использует Rails, поэтому они будут вызывать его немного по-другому, используя что-то вроде (onMissingMethod):

get_user_by_username()

Что тоже не здорово, поскольку он все еще запрашивает базу данных по строке, но имеет некоторые улучшения производительности, чтобы позволить rails сделать это.

Ваш htaccess будет выглядеть следующим образом:

RewriteRule ^(.*) profile.php?name=$1

Надеюсь, что ответит на ваш вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...