通过.htaccess更改根文件夹

时间:2011-04-26 14:49:43

标签: php apache .htaccess

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

我可以使用.htaccess或其他东西将根文件夹更改为/example.com/public/之类的内容吗?

4 个答案:

答案 0 :(得分:27)

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

RewriteEngine On

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

这会将所有不以/public/开头的请求重定向到具有此功能的网址。

希望有所帮助。

答案 1 :(得分:7)

{。{3}}无法在.htaccess文件中设置,只能在服务器配置中设置。由于您很可能没有修改服务器设置的权限,因此您唯一的解决方案是使用一些重写魔法作为DocumentRoot directive

答案 2 :(得分: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]

答案 3 :(得分:1)

我使用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