HTACCESS: изменение корневого домена в подкаталог - PullRequest
8 голосов
/ 13 мая 2011

Я пытаюсь использовать подкаталог в качестве корневой папки для одного из моих доменов. Используя .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/,, в папке domain отобразится index.php. Если я зайду http://domain.com/test/,, то отобразится содержимое (или 403) папки test. НО если перейти к http://domain.com/test (для использования ярлыков или даже для отображения папки), я перенаправлюсь на http://domain.com/domain/test/.

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

Любая помощь очень ценится.

Ответы [ 5 ]

8 голосов
/ 13 мая 2011

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

Я в основном добавил начальный блок, который специально ищет каталоги в вашей папке / 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]
3 голосов
/ 13 мая 2011

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

2 голосов
/ 16 мая 2011
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(.*)$ /domain/$1/ [L]

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

0 голосов
/ 28 января 2012

Что мне помогло, так это генератор auto.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]
0 голосов
/ 13 мая 2011

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

RewriteBase / f2f / f2fweb

...