Как создать отдельные URL-адреса страниц?

У меня небольшая система. Пользователи могут войти в систему, чтобы просмотреть рабочие записи. Этот 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