为子域配置.htaccess

时间:2017-12-22 14:19:12

标签: php .htaccess redirect cpanel

我有一个example.com,我在Cpanel中为它创建了一个子域。在Cpanel中,它出现了:

test.domain.com / public_html / test not reirected 我想访问我的新子域:test.domain.com我在子域文件夹中创建了一个index.html:/ home / domainname / public_html / test

我的.htaccess是:

 AddType text/x-component .htc
 RewriteEngine on     
 RewriteCond %{HTTPS} off     
 RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
 RedirectMatch 301 ^/test/(.*)$ http://test.example.com/$1
 RewriteRule ^(en|fr)/([a-z]*) /index.php
 RewriteRule !\.
 (js|ico|gif|jpg|jpeg|png|css|swf|htm|xml|php|map|ttf|woff|woff2)$ 
  index.php
 RewriteRule ^(form|ajax|captcha)/([a-z]*) /index.php

domain.com有ssl和subdomain我不知道。我在.htaccess中为子域添加了这一行:

RedirectMatch 301 ^/test/(.*)$ http://test.example.com/$1

但无法正常工作:访问test.example.com时,我得到&#34;此页面无法正常工作test.example.com重定向了你太多次了。&#34; < / p>

如果使用https:

RedirectMatch 301 ^/test/(.*)$ https://test.example.com/$1

我当然会收到警告并且未找到 在此服务器上找不到请求的URL /home/domainname/public_html/index.php。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

您应该添加RewriteBase指令:

RewriteEngine on
RewriteBase /

您还应该将RedirectMatch指令更新为:

RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^test/(.*)$ http://test.example.com/$1 [R=301,L]

它会测试请求域是否为example.com,如果请求URI前缀为test/{any_characters},则会永久重定向到test.example.com/{any_characters}