@Romo4ka_eto_ia
Просто человек

Как сделать ссылку без параметров?

Здравствуйте. Уже давно изучаю web, но всё как то руки не доходили до красивых ссылок. Не знаю как выразиться, сейчас попробую описать что имею ввиду.
Есть страничка domain.com/account/{А тут уникальный UID пользователя}. Глупо было бы создавать отдельный файл для каждого пользователя, можно сделать account#{UID}, можно account/?uid=123456. Но всё таки хочется чтобы ссылка была красивой. Я попробовал покопаться в гугле, ничего к сожалению не нашел, посмотрел пару веб приложений в которых это реализовано, но тоже ничего не нашел. (смотрел в конфиге NGINX, тк использую данный веб сервер)
Буду очень благодарен за объяснение, или ссылку на статью для таких бубликов как я. Всем добра :)
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 2
@grek_cheburek
Программист самоучка
Знать бы еще, что для вас является красивым адресом. Если вам нужно подставить номер аккаунта, то можно же сделать так.
domain.com/id1234
Если вы хотите не номер, а логин, тогда примерно так.
domain.com/greck_chebureck

Логика такого запроса одновременно и легка и тяжела.
Во-первых, вам нужно использовать модуль чпу. Его можно подключить в файле .htaccess. Во-вторых вам нужно определиться, какие глобальные переменные из массива $_GET являются главными в вашем проекте.
У меня, к примеру, глобальная переменная из массива $_GET['lang'] является главной и в обязательном порядке посылается к каждой страницы проекта.
Далее вам нужно решить, где у вас находится папка с аккаунтам пользователя.
К ней, в файле htaccess прописывайте путь, примерно так.
RewriteRule ^([a-z0-9-_.]+)$ /user-page/index.php?login=$1
RewriteRule ^([0-9]+)$ /user-page/index.php?id=$1
Ну а в php отлавливать, какая переменная пришла на страницу. id или login.
Если login, Тогда пользователя вызываем по логину, если id, тогда по номеру аккаунта.

И помните, все аккаунты нужно хранить в базе данных. А то я понял, что для каждого пользователя вы хотите создать отдельный файл php.
Этого делать не нужно.
Ответ написан
Комментировать
не туда копаете
это называется ЧПУ
думаю этого уже достаточно как ответ гуглится за 1 секунду.

Теперь по редиректам
mod_rewrite не считает GET частью урла в принципе, по этому в RewriteRule он попасть не может ни при каком желание
Делается это вот так

# 301 --- http://www.test3.com/faq.html?faq=13&layout=bob => bbq.html
RewriteCond %{QUERY_STRING} (?:^|&)faq\=13(?:$|&)
RewriteCond %{QUERY_STRING} (?:^|&)layout\=bob(?:$|&)
RewriteRule ^faq\.html$ /bbq.html? [L,R=301]

Обратите внимание на знак "?" вот тут /bbq.html? [L,R=301]
он удалит GET из урла
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы