Каждый раз, когда пользователь регистрируется на моем сайте, я бы хотел, чтобы у них был свой собственный подкаталог с зарегистрированным «именем пользователя». Каждый подкаталог пользователя будет иметь тот же файл 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 в качестве рабочей среды.
спасибо
Например, вы можете сделать это с помощью одного htaccess следующим образом:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule>
Что оно делает:
В основном это означает, что если вы вводите 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']