HTACCESS: измените корневой каталог домена на подкаталог

#php #.htaccess #directory #root

#php #.htaccess #каталог #root

Вопрос:

Я пытаюсь использовать подкаталог в качестве корневой папки для одного из моих доменов. Используя .htaccess, я использую mod_rewrite для выполнения работы. Вот код, который у меня уже есть:

 RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain/$1

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ /domain/index.php [L]
  

Это позволяет выполнить работу, но не полностью. Например:

Если я перейду http://domain.com /, он отображается index.php изнутри domain папки. Если я перейду http://domain.com/test /, это отобразит содержимое (или 403) test папки. НО если я перейду http://domain.com/test (для использования ярлыков или даже для отображения папки) Я перенаправляюсь на http://domain.com/domain/test /.

Этого не должно было произойти. Во всяком случае, он либо выполняет маску из .htaccess (если используется тест), либо должен просто перейтиhttp://domain.com/test /. Я пытался найти способ обойти это, и я не могу. Итак, я обращаюсь к вашей помощи! 🙂

Мы высоко ценим любую помощь.

Комментарии:

1. Это задание для виртуальных хостов, а не для .htaccess

2. Я использую .htaccess. Поэтому, пожалуйста, обеспечьте поддержку как таковую, вместо того, чтобы заставлять меня изучать что-то еще.

3. Вам не нужно ничего изучать, вам всего лишь нужно изменить путь в вашем vhosts.conf и перезапустить сервер.

4. «Поэтому, пожалуйста, обеспечьте поддержку как таковую, вместо того, чтобы заставлять меня изучать что-то еще». — Это не то место, где вы можете указывать, что и как отвечать отвечающим. Принимаете вы ответ или нет — не забывайте, что это сайт, где профессионалы помогают профессионалам , а не ваша личная бесплатная поддержка.

5. Ребята, как я понимаю, у него просто нет доступа к серверу, но есть .htaccess.

Ответ №1:

Попробуйте это: это немного грубо, но должно делать то, что вы хотите. Возникает небольшая путаница: кое-что из того, что я пытался сделать, будет зависеть от вашей базы перезаписи (возможно, вам потребуется удалить один или несколько символов / ).

По сути, я добавил начальный блок, который специально ищет каталоги в вашей папке / domain /, которые не заканчиваются косой чертой, и добавил еще один. Дайте мне знать, работает ли это вообще.

 RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond /domain/%{REQUEST_URI} -d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /domain/$1/

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain/$1

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ /domain/index.php [L]
  

Комментарии:

1. У меня это не работает. Я по-прежнему получаю тот же эффект, что и исходное кодирование.

Ответ №2:

Комментатор прав, если вы хотите use a sub-directory as the root folder for one of my domains , просто настройте это в конфигурации виртуального хоста apache (DocumentRoot).

Ответ №3:

 RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(.*)$ /domain/$1/ [L]
  

Приведенный выше код успешно выполняет все, что я хотел, чтобы он делал.

Ответ №4:

Используйте RewriteBase следующим образом:

RewriteBase /f2f/f2fweb

Ответ №5:

Что мне помогло, так это автоматический генератор.htaccess на моем хостинге!!!!

 DirectoryIndex index.php
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://(www.)?domain.com/TEST//.*$ [NC]
RewriteRule .(js|css|jpg|gif|png|bmp|mp4|3gp|m4a|m4r|aac|mp3|ogg|wave)$ - [F]