Я пытаюсь сделать для социальной платформы, такой как Instagram или Facebook, и я хочу показать пользователям имя пользователя, как это examplesite.com/usernamehere так в URL. Я исследовал, как это сделать, и узнал, что это делается с помощью кодов перезаписи htaccess. У меня есть код
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ user.php?url=$1 [QSA,L]
В целом это работает, но, например, когда я хочу войти на examplesite.com/login или страницу регистрации, rewriterules думает, что слово login или register является именем пользователя, и никогда не открывается. Папки должны быть открыты, а также папки css, scss, js, img и т. д. на моем сервере должны восприниматься как имя пользователя, поэтому, если кто-то пишет в URL слова examplesite.com/css, img или js и т. д., не следует открывать файлы css, img или js.
Извините за мой английский. Спасибо всем! <3
решение1
Ряд различных вещей:
Не используйте .htaccess
файлы
Существует множество примеров кода в .htaccess
файлах, которые затем копируются снова и снова.культ грузасистемные администраторы вместо этого следовало бы прочитать настоящее руководство.
От:https://httpd.apache.org/docs/2.4/howto/htaccess.html
В общем, вы должны использовать
.htaccess
файлы только тогда, когда у вас нет доступа к основному файлу конфигурации сервера. Например, существует распространенное заблуждение, что аутентификация пользователя всегда должна выполняться в файлах .htaccess, и в последние годы,еще одно заблуждение, что директивы mod_rewriteдолженидите в.htaccess
файлы.Это просто не тот случай.
...
В случае директив RewriteRule, в.htaccess
контекстеЭти регулярные выражения необходимо перекомпилировать при каждом запросе к каталогу, тогда как в контексте конфигурации основного сервера они компилируются один раз и кэшируются.Кроме того, сами правила более сложны, поскольку необходимо обходить ограничения, связанные с контекстом каталога и mod_rewrite. Проконсультируйтесь сРуководство по переписыванию для более подробной информации по этому вопросу.
Второй:
Вы уже упомянули пару имен каталогов, которые следует исключить из сопоставления example.com/[user-alias]
.
Не забудьте также запретить людям намеренно выбирать эти имена каталогов (и другие) в качестве своих псевдонимов на вашей странице регистрации.
Последний
RewriteCond
Директивы используются для ограничения типов запросов, которые будут подлежать следующему RewriteRule
.
В вашей конфигурации на «простом» английском языке указано: не применять следующее, RewriteRule
если существует файл или каталог с таким же именем, как компонент имени файла из запроса.
Вы просто можете добавить дополнительные условные операторы с помощью дополнительных RewriteCond
строк, например:
RewriteCond %{REQUEST_FILENAME} !"login"
следует исключитьexample.com/login