通过.htaccess更改根文件夹

Ema*_*sev 11 php apache .htaccess

我有一个与域名和根文件夹关联的共享主机帐户(如果这是错误的术语,请更正我),/以便服务器上的所有文件都是公共的/可通过浏览器访问.

我可以使用.htaccess或其他东西来更改根文件夹/example.com/public/吗?

clm*_*art 28

如果我理解正确,以下内容应该有效

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)

这会将所有未开头的请求重定向/public/到具有此功能的URL.

希望有所帮助.


acm*_*cme 7

DocumentRoot指令不能在.htaccess文件中设置,只在服务器配置.由于您很可能没有修改服务器设置的权限,因此您唯一的解决方案是使用一些重写魔法,就像已经提到的clmarquart一样.


Tom*_*aus 6

这就是我总是在我的框架中使用它:

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

RewriteCond %{REQUEST_URI}  ^/$
RewriteRule !^example.com/public/(.*) /example.com/public/$1 [L,NC]
Run Code Online (Sandbox Code Playgroud)


Sem*_*erv 5

我使用 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
Run Code Online (Sandbox Code Playgroud)