У меня есть общая учетная запись хостинга, связанная с именем домена и корневой папкой (исправьте меня, если это неправильный термин) установлено в /
чтобы все файлы на сервере были общедоступны / доступны через браузер.
Могу ли я использовать .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