У меня есть ситуация, когда пользователям будет назначен случайно сгенерированный код приглашения для обмена. Я хотел бы сделать так, чтобы пользователи могли просто ввести этот код приглашения в URL в качестве каталога.
В настоящее время я обрабатываю код приглашения через GET:
example.com/signup.php?i=iNviTe
Я хотел бы упростить это так, чтобы example.com/iNviTe
будет иметь тот же результат, что и приведенный выше URL, но будет полностью прозрачным для пользователя.
Это так близко, как я дошел до решения аспекта перезаписи URL:
RewriteEngine On
RewriteRule ^([^/]*)\.html$ /signup.php?I=$1 [L]
Как это возможно? На серверах, которые я использую, работают Nginx и Apache соответственно, а сайт написан на PHP.
Это будет совместная работа веб-сервера и PHP. Веб-сервер должен знать, чтобы передавать несуществующие файлы / каталоги в скрипт PHP.
Если вы используете Apache, изучите .htaccess и mod_rewrite. Пример набора правил:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9-_.]*)$ /invite.php?code=$1 [L]
куда $_GET['code']
будет установлен с кодом, указанным в URL. Так что посещение example.com/foobar
будет молча перенаправить на example.com/invite.php?code=foobar
Других решений пока нет …