我已经坐在同一个ip和同一个文件根与Apache的虚拟主机,因为我想使用共享文件和文件根目录中的内容。
我希望我的第二个网站指向文档根目录的子文件夹
http://example.com Loads http://example.com/subfolder
我在.htaccess中尝试了各种重写规则,他们都可以redirect,但保持在我不喜欢的url中的子文件夹我的意思是url将是
http://example.com/subfolder
而我想要的
http://example.com
这些都是我所尝试过的
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ RedirectMatch ^/$ http://example.com/subfolder
要么
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ RewriteRule ^(.*)$ /subfolder/$1 [L]
第二个也给500内部服务器错误,我该怎么办?
你想要做的不是redirect,而是用RewriteRule重写查询。 所以应该是这样的:
RewriteCond %{HTTP_HOST} ^(www.)?example1.com$ RewriteRule !^subfolder1/ subfolder1%{REQUEST_URI} [L] RewriteCond %{HTTP_HOST} ^(www.)?example2.com$ RewriteRule !^subfolder2/ subfolder2%{REQUEST_URI} [L]
F.ex. 查询http://www.example1.com/foo.html将被Apache视为一个查询http://www.example1.com/subfolder1/foo.html 。 更改此查询中的域名,该文件将从子文件夹2中提供。
在testing我的解决scheme时,我发现这个问题和你的问题非常相似:
由于可能的configuration错误,请求超出了10个内部redirect的限制。
术语“redirect”意味着你的服务器告诉浏览器去获取另一个页面,而不是它要求的页面。 当浏览器执行此操作时,它也将更新位置栏中的path。
为了隐藏新的位置,你需要改用mod_rewrite 。 这是一个模块,它将查看服务器请求的内容,并将其转换到服务器上的不同位置,而不发出redirect。