Apache htaccess将所有子域重定向到同一目录
我希望能够将所有子域重定向到文件夹:Apache htaccess将所有子域重定向到同一目录,apache,.htaccess,Apache,.htaccess,我希望能够将所有子域重定向到文件夹: RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.com$ RewriteRule (.+)$ "http://example.com/subdomains/%1" [L,P] 例如,如果一些访问sub1.example.com它将保留URL,但显示example.com/subdomains/sub1,如果sub1目录不存在,它将显示example.com/404 这可能吗 我尝试了上述代码,但它显示: Forb
RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.com$
RewriteRule (.+)$ "http://example.com/subdomains/%1" [L,P]
例如,如果一些访问sub1.example.com
它将保留URL,但显示example.com/subdomains/sub1
,如果sub1目录不存在,它将显示example.com/404
这可能吗
我尝试了上述代码,但它显示:
Forbidden
You don't have permission to access /index.php on this server.
Wordpress说:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我想说你遇到了权限问题。我猜您的Apache服务器是以
Apache
用户的身份运行的。使用chmod
授予对该路径的apache
访问权限 您的上述.htaccess将从外部重定向调用,因为您使用完整的URL作为目标
在你的问题中,你说你想保留主机名,所以我假设这就是要求
0)启用重写引擎
1) 正在将已知子域重写到其在/subdomains中的目录
http://foo.example.com/hello
http://bar.example.com/hello
浏览器中的URL将保持不变,但会在内部映射到
/subdomains/foo/
/subdomains/bar/
2) 将未知子域重写到/404
http://foo.example.com/hello
http://bar.example.com/hello
浏览器中的URL将保持不变,但会在内部映射到
/subdomains/foo/
/subdomains/bar/
通过第一个重写规则
from 1)
如果/subdomains/bar/
不存在,则第二条重写规则将从2)开始并在内部将其映射到
/404/
3) 测试环境
实际上,我用示例代码测试了所有这些,这里提供了:如果直接转到http://example.com/subdomains/sub1/
?您是否也有禁止的错误,或者您有权访问它?不管怎样,你的代码应该可以工作,尽管它写得不好。我认为它确实起作用了。当您禁用此时
,是否将sub1.example.com
视为url?不,没有错误代码也可以。禁止的问题可能由其他.htaccess设置引起,例如在IndexIgnore上。检查你被引导到哪里。我也安装了Wordpress-我是把这两部分代码放在Wordpress代码的上面还是下面?你是把Wordpress用于这些子域还是只用于主域?如果只是主域名,我会试着把它放在上面。它只是主域名——wordpress只在主域名上运行。我试着把它放在上面,它工作了,但是阻止了主域(wordpress)的工作,如果我把它放在下面,wordpress工作了,但是没有一个子域。你用www.RewriteCond%{HTTP_HOST}调用你的主域^www\.example\.com$