У меня небольшая система. Пользователи могут войти в систему, чтобы просмотреть рабочие записи. Этот URL страницы выглядит примерно так
domain.com/view_works.php
но моему клиенту нужны отдельные URL-адреса страниц для каждого пользователя. Что-то вроде этого:
Если имя пользователя user1
domain.com/user1_works.php
Как я могу это достичь?
У вашего сообщения есть значительная слабость в том, что идеальный ответ потребует знания многих особенностей вашей ситуации. Тем не менее, я могу сказать по информации, которую вы указали, что вы не подвергались воздействию множества релевантных концепций, которые я могу расширить, чтобы помочь вам найти хорошее решение для себя.
Другие ответы здесь предлагают использовать правило перезаписи. Я не рекомендую этого. Это, вероятно, ленивое / взломанное решение, а не идеальная практика. Часто рекомендуется перенаправить все запросы в один файл php и попросить логику php запросить, где она принадлежит. Это первый шаг – создать или использовать существующую php-систему для маршрутизации запроса на определенный обработчик для пользователей.
RESTful api предлагает много о том, какой должен выглядеть красивый, единообразный и интуитивный uri. Хотя мы не пытаемся создать api здесь … стоит учесть принципы, которые учит нас REST. Я бы не использовал глаголы в вашем ури. Ввод текста в URL-адрес и переход на эту страницу подразумевают, что пользователь намеревается что-то посмотреть, поэтому domain.com/view_works.php
делает намного больше смысла как domain.com/works
или domain.com/someUserName/works
Конкретное внедрение ДЕЙСТВИТЕЛЬНО зависит от многих факторов. В зависимости от того, какой domain.com
/ содержит domain.com/users/someUserName/works
, лучшим вариантом может стать что-то вроде domain.com/users/someUserName/works
. То, что вы могли бы сделать оттуда, имеет ваш основной файл index.php
(файл, к которому все запросы перенаправляются) анализирует uri, так что вы знаете, что вам нужно отправить запрос в контроллер users
, который может выбрать someUserName
то имя пользователя и отобразить его works
,
Как я уже сказал, есть много вариантов, но, по крайней мере, просто используя preg_match
чтобы разобрать URL-адрес на части и маршрутизировать что-либо с помощью /users/
to users.php
и с его помощью, кто / что отображать будет лучше, чем доступ к файлы напрямую, как view_works.php
, используя глаголы в uri с уродливыми расширениями файлов в конце.
Если вы используете Apache в качестве веб-сервера, вы можете использовать его механизм перезаписи для достижения этой функциональности. С его помощью вы можете внутренне перенаправить любой URL-адрес, который вы хотите (определяемый выражением регулярного выражения), на любой PHP-скрипт и передать любую часть регулярного выражения в качестве параметра сценария.
Например, вы можете переписать так, чтобы URL-адрес:
domain.com/user1_works.php
внутренне перенаправляет на:
domain.com/works_user_handler.php?user=user1
В .htaccess вы можете положить это, например:
RewriteRule ^user([0-9]*)/works$ /view_works.php?userid=$1 [L]
Это приведет к тому, что yoursite.com/user123/works
перейдет на view_works.php?userid=123