Intereting Posts
Как получить звание определенного пользователя в конкретном предмете для всех испытуемых, признанных связями Единая стоимость Mysqli Класс Doctrine \ Common \ Collections \ ArrayCollection не является допустимым сущностью или отображенным суперклассом Как найти слово, которому предшествует другое конкретное слово? Как получить все пятницы с текущего месяца php изменение размера изображения при загрузке Как реализовать сервисный уровень в Zend Framework? Ошибка «Font_Glyph_Outline» при использовании WebFonts с DOMPDF Blobstore на GAE PHP Не получать уведомления о выходе для производственного сертификата Результат формы на той же странице Как я могу использовать простой раскрывающийся список в окне поиска GridView :: widget, Yii2? Как показать день и дату в данных временной метки (PHP MYSQL) PHP включает в себя вопрос о лучших практиках Где я могу узнать о внутренних функциях PHP?

Создание динамических подкаталогов с использованием htaccess и php

Каждый раз, когда пользователь регистрируется на моем сайте, я бы хотел, чтобы у них был свой собственный подкаталог с зарегистрированным «именем пользователя». Каждый подкаталог пользователя будет иметь тот же файл index.php, который сделает что-то.

Например: «/ users / username1 /» и «/ users / username2 /»

Если кто-то хочет получить доступ к поддиректории, они просто перейдут к: «www.example.com/users/username1/» или «www.example.com/users/username2/»

Легким и беспорядочным решением было бы просто создать подкаталог для каждого пользователя и поместить тот же файл index.php в каждый каталог. Но для меня это будет только толковать мое пространство на сервере и сделать мои каталоги большими.

Я хотел знать, можно ли все это сделать с помощью .htaccess? Могу ли я создать один файл index.php и один файл .htaccess и поместить их в каталог «/ users /»? Каким будет фактический код, который я должен был бы разместить в моем файле .htaccess?

Если у вас есть лучший способ сделать это, пожалуйста, дайте мне знать. Я использую Apache и PHP в качестве рабочей среды.

спасибо

Solutions Collecting From Web of "Создание динамических подкаталогов с использованием htaccess и php"

Например, вы можете сделать это с помощью одного htaccess следующим образом:

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule> 

Что оно делает:

  • включает переписывающий двигатель
  • проверяет, существует ли запрошенный файл
  • проверяет, существует ли запрошенный каталог
  • если NOT, он перенаправляет запрос на ваш основной index.php

В основном это означает, что если вы вводите URL-адрес, например yourdomain.com/users/ivan/, запрос будет перенаправлен на:

 index.php?url=/users/ivan 

то вы $ _GET ['url'] в своем index.php и разделите его на куски.

Это просто пример , есть другие методы mod_rewrite для этого.

Сделайте это виртуальным. Нет подкаталогов, вы можете использовать mod_rewrite для имитации этого.

С mod_rewrite вы можете сделать / users / username1 привести к /users.php?user=username1, например. Все прозрачно для клиента, он не замечает, что на самом деле происходит.

Используя что-то вроде этого:

 RewriteEngine On RewriteRule ^([\-_0-9A-Za-z]+)$ index.php?a=$1 [L] You can customize RewriteRule as much as you want. 

Вы можете по существу ввести любой каталог, который захотите, и он будет перенаправлен на страницу index.php.

Если вы хотите, чтобы существующие каталоги не перенаправлялись, сделайте следующее:

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([\-_0-9A-Za-z]+)$ index.php?a=$1 [L] 

Если вы хотите ограничить область действия, то только подкаталог user/ перенаправляется (аналогично переполнению стека), просто добавьте «пользователь» в начало правила:

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^user/([\-_0-9A-Za-z]+)$ index.php?a=$1 [L] 

И, наконец, если вы хотите, чтобы отдельный файл обрабатывал все пользовательские запросы отдельно от вашей фактической страницы index.php:

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^user/([\-_0-9A-Za-z]+)$ users.php?a=$1 [L] 

Это очень похожая настройка, которую я использую для распространения файлов CSS.

Примечание. Каталог будет содержать $_GET['a']