我已经在同一个 IP 和同一个文档根目录上与 Apache 建立了两个虚拟主机,因为我想在文档根目录中使用共享文件和内容。
我希望我的第二个网站指向文档根目录的子文件夹
http://example.com Loads http://example.com/subfolder
我尝试了 .htaccess 中的各种重写规则,它们都可以重定向,但会保留 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 内部服务器错误,我该怎么办?
答案1
您要做的不是进行重定向,而是使用 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]
例如查询http://www.example1.com/foo.htmlApache 将把它当作查询来处理http://www.example1.com/subfolder1/foo.html。更改此查询中的域,文件将从子文件夹 2 提供。
在测试我的解决方案时,我还发现了这个,与您的问题非常相似:
由于可能的配置错误,请求超出了 10 次内部重定向的限制。?
答案2
“重定向”一词的意思是您的服务器告诉浏览器去获取另一个页面,而不是它所请求的页面。当浏览器执行此操作时,它还会更新位置栏中的路径。
为了隐藏新位置,您需要使用mod_rewrite。这是一个模块,它将查看服务器请求的内容并将其转换到服务器上的不同位置,而无需发出重定向。
答案3
我该如何制作这些 SSL?我正在使用这个……
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?domainone.com$
RewriteRule ^(?!domainone/)(.*)$ /domainone/$1
RewriteCond %{HTTP_HOST} ^(www.)?domaintwo.com$
RewriteRule ^(?!domaintwo/)(.*)$ /domaintwo/$1
RewriteCond %{HTTP_HOST} ^(www.)?domainthree.com$
RewriteRule ^(?!domainthree/)(.*)$ /domainthree/$1