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.
希望有所帮助.
该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]
Run Code Online (Sandbox Code Playgroud)
我使用 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)