我有一个与域名关联的共享主机帐户和根文件夹(如果这是错误的术语,请更正我)设置为/
,以便服务器上的所有文件都是公共的/可通过浏览器。
我可以使用.htaccess或其他东西将根文件夹更改为/example.com/public/
之类的内容吗?
答案 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