Изменение корневой папки через .htaccess

У меня есть общая учетная запись хостинга, связанная с именем домена и корневой папкой (исправьте меня, если это неправильный термин) установлено в / чтобы все файлы на сервере были общедоступны / доступны через браузер.

Могу ли я использовать .htaccess или что-то изменить корневую папку на что-то вроде /example.com/public/ ?

Если я правильно понимаю, следующее должно работать

 RewriteEngine On RewriteCond %{REQUEST_URI} !^/public/ RewriteRule ^(.*)$ /public/$1 [L,R=301] 

Это приведет к перенаправлению всех запросов, которые не начинаются с /public/ на URL, который делает.

Надеюсь, это поможет.

Директива DocumentRoot не может быть установлена ​​в файле .htaccess только в конфигурации сервера. Поскольку у вас, скорее всего, нет привилегий для изменения настроек сервера, единственным решением будет использование некоторой переписывающей магии, как уже упоминалось в clmarquart .

Именно так я всегда использую его в своих рамках:

 Rewritecond %{REQUEST_FILENAME} !-f RewriteRule (.*) /example.com/public/$1 [L,NC] RewriteCond %{REQUEST_URI} ^/$ RewriteRule !^example.com/public/(.*) /example.com/public/$1 [L,NC] 

Я использую bluehost … это то, что работает для меня: это полезно, когда вы находитесь на общем хостинге и имеете несколько доменных имен.

Ваш основной домен настроен на public_html, но ваши домены являются подпапками внутри public_html

Это делает так, что вам не нужно смешивать все основные файлы имен доменов с дополнительными папками домена … каждый домен может находиться в их собственной папке …

 RewriteEngine on RewriteCond %{HTTP_HOST} ^(www.)?PUTYOURDOMAINNAMEHERE.com$ RewriteCond %{REQUEST_URI} !^/PUTYOURFOLDERHERE/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /PUTYOURFOLDERHERE/$1 RewriteCond %{HTTP_HOST} ^(www.)?PUTYOURDOMAINNAMEHERE.com$ RewriteRule ^(/)?$ PUTYOURFOLDERHERE/ [L] Options +SymLinksIfOwnerMatch