#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]