Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 阻止子域上的htaccess 301重定向_.htaccess_Redirect - Fatal编程技术网

.htaccess 阻止子域上的htaccess 301重定向

.htaccess 阻止子域上的htaccess 301重定向,.htaccess,redirect,.htaccess,Redirect,我有301重定向,将/index.html定向到/site文件夹,当我创建子域时,它还将链接重定向到/site,导致404找不到 例如:members.mysite.com重定向到members.mysite/site,这会导致404错误。在不更改重定向的情况下,我可以为特定文件夹或其他内容添加执行选项 .htaccess内容 AddType text/x-server-parsed-html .htm .html RedirectMatch 301 ^/index.html(.*)$ /si

我有301重定向,将/index.html定向到/site文件夹,当我创建子域时,它还将链接重定向到/site,导致404找不到

例如:members.mysite.com重定向到members.mysite/site,这会导致404错误。在不更改重定向的情况下,我可以为特定文件夹或其他内容添加执行选项

.htaccess内容

AddType text/x-server-parsed-html .htm .html
RedirectMatch 301  ^/index.html(.*)$ /site$1

您可以使用mod_rewrite检查主机:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^your-main.domain.com$ [NC]
RewriteRule ^index.html(.*)$ /site$1 [R=301,L]

请查看,以更好地描述其功能。您可以定制正则表达式(
^your main.domain.com$
),使其更符合您的需要,例如在前面添加一个
(www\)?
,以处理可选的“www”。

将子域的文档根设置在主域的文档根以外的某个位置,或者使用rewrite mod执行此操作!谢谢,我无法按你的方式工作,但我尝试了重定向永久索引.html/site/,子域工作正常我想知道这和我以前使用的有什么区别?是否会损害谷歌分析?@Ahmedk不,与您使用
重定向所做的不同之处在于它不会检查某人试图访问的主机。从你的问题来看,这两台主机似乎由同一台主机提供服务,因此在重定向之前,你需要检查它是否是主站点,以防止子域也重定向。它不起作用,我认为它起作用,但当我再次检查时,它起作用了(重定向)子域正在工作我再次尝试了你的解决方案当我得到我的site.com转到mysite.com/site时它可以工作但是当我尝试members.mysite.com/site时它仍然转到members.mysite.com/site我只是不想在请求子域时添加/site
RewriteCond
必须将主机只匹配到主域,而不是任何子域,如果它与子域匹配,它将重定向它。该正则表达式必须只匹配主域,如果匹配主域,子域将不会被重定向。最后我猜它工作了!我将最后一行更改为
RewriteRule(.*)/site$1[R=301,L]
删除了^index.html,这可能会阻止它,但如果我键入mysite.com/any-error-url,它会重定向到mysite/site循环重定向,我猜它不会显示404错误页面,我可以禁用它吗?谢谢你的帮助