我的网站位于使用cPanel 11的主机上。
不幸的是,它将“www.e-motiv.net”和“e-motiv.net”重定向到public_html。 我想要的。 public_html / www和public_html /这对最终用户来说是不可见的。
我认为最好的方法是通过mod_rewrite,所以我做了以下几点。
文件空间如下(来自public_html /):
我想要这个(第二部分看不见!):
我以为会这样做:
RewriteCond %{HTTP_HOST} ^www.e-motiv.net$
RewriteCond %{REQUEST_URI} !/www
RewriteRule ^(.*)$ /www/$1 [NC,L]
1和2工作,但虽然3给出了正确的文件,但它改变了地址!? (所以不可见) 所以,在地址栏中你会得到:www.e-motiv.net/test - > www.e-motiv.net/www/test/ 咦??
如果mod_rewrite不是最佳解决方案,请告诉我们!
答案 0 :(得分:1)
这是因为mod_dir。 mod_dir将尾部斜线添加到映射到目录的URL。 mod_dir不知道用mod_rewrite创建的这些“虚拟URL”。
因此,要么使用
禁用此行为DirectorySlash Off
但是,这将向www.example.com/folder提出请求,导致找不到404。你可以用一些重写来解决这个问题。所以完整的解决方案就像:
DirectorySlash Off
#www dir only
RewriteCond %{DOCUMENT_ROOT}/$0 -d
RewriteRule ^www/(.+[^/])$ /$1/ [R,L]
#other dirs
RewriteCond %{DOCUMENT_ROOT}/$0 -d
RewriteRule ^(.+[^/])$ /$1/ [R,L]