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_Subdomain - Fatal编程技术网

.htaccess文件中的子域仅适用于索引

.htaccess文件中的子域仅适用于索引,.htaccess,subdomain,.htaccess,Subdomain,我的.htaccess中有一个子域设置,它似乎只适用于默认的index.html页面。我想它的任何工作在对应于子域的文件夹页面。为了隐私而编辑,假设我的域是example.org。文件的相关部分如下所示 #subdomain RewriteCond %{HTTP_HOST} ^subname\.example\.org$ [OR] RewriteCond %{HTTP_HOST} ^www\.subname\.example\.org$ # (a few lines added by my h

我的
.htaccess
中有一个子域设置,它似乎只适用于默认的
index.html
页面。我想它的任何工作在对应于子域的文件夹页面。为了隐私而编辑,假设我的域是
example.org
。文件的相关部分如下所示

#subdomain 
RewriteCond %{HTTP_HOST} ^subname\.example\.org$ [OR]
RewriteCond %{HTTP_HOST} ^www\.subname\.example\.org$
# (a few lines added by my hosting company deleted -- see below)
RewriteRule ^/?$ "http\:\/\/example\.org\/subname\/" [R=301,L]
因此,上面的结果是,如果我的“公共html”(根?)中有一个
index.html
页面,
http://example.org
和一个不同的
index.html
存储在一个子文件夹中(与子域同名),我将得到这个预期的结果,它可以工作

浏览至:
http://example.org
导致查看
http://example.org/index.html

浏览至:
http://subname.example.org
导致查看
http://example.org/subname/index.html

到目前为止很好。这是我创建域名时所期望的。但是,如果在
subname
文件夹中存储了特定的文件
myfile.html
我希望它也能正常工作,而且它不会

浏览至:
http://subname.example.org/myfile.html
导致404错误

尽管浏览到
http://example.org/subname/myfile.html
工作正常。在这种情况下,将显示
myfile.html
。那么,我能做些什么来修改子域代码以获得我想要的结果呢?即浏览到
http://subname.example.org/ANYFILE
应该与浏览
http://example.org/subname/ANYFILE
,无论“ANYFILE”是什么。毕竟,这是我开始设置子域的主要原因之一

注意:我承认我依赖我的托管公司的cPanel实用程序来创建子域代码,所以我首先向他们的技术支持寻求帮助。长话短说,他们没有。也许我所希望的是不可能的

此外,我从代码中删除的行与我的托管公司在某个时候添加的名为“知名度/极致挑战”的内容有关。因为删除它们对我描述的行为没有影响,所以我省略了它以避免混淆问题

这只会“重定向”文档根目录。要重定向所有URL,您需要将上述内容更改为:

RewriteRule (.*) http://example.org/subname/$1 [R=301,L]
$1
反向引用引用在
重写规则
模式中捕获的URL路径,即
(.*)

无需对替换字符串中的冒号、斜杠和点进行反斜杠转义(这是典型的cPanel)

此外,我从代码中删除的行与我的托管公司在某个时候添加的名为“知名度/极致挑战”的内容有关

当(让我们加密?)SSL证书自动续订时,可能需要这些行。(尽管上述重定向到“http”-您没有使用HTTPS吗?)


更新:

顺便说一句,如果您愿意,这两个条件可以简化为一个条件。例如,上述内容相当于:

RewriteCond %{HTTP_HOST} ^(www\.)?subname\.example\.org$

.htaccess
全是小写。是的,它是一个旧站点(还不是https)。但无论如何,首先感谢你澄清为什么要添加这些越狱。另外,请原谅我之前的评论(刚刚删除!)你的建议似乎有效!它似乎不会影响对文档根目录中的文件的访问。并且,正如所希望的,在“域/子”中有一个文件/“现在可以拿了!我还想让你知道,这几天来,我一直是这方面的第四位技术支持人员,他们都帮不了我。可悲的是,我想如果不能通过CPANEL来完成,他们不知道从哪里开始。再次感谢!另外,由于我还没有开始制作我的网站HTTPS,我不知道为什么要添加所有其他行。所有这些都让我在决定使用https时对使用CPANEL非常谨慎。但现在我可能不需要这些行,所以我保存了旧的htaccess,并将它们从固定版本中删除。再次感谢!不客气。是的,托管支持通常不会处理
.htaccess
查询。(虽然有时只有web主机知道在某些情况下要使用的正确指令。)web主机可能默认启用了SSL证书(一个指向“到处都是HTTPS”的驱动器),此时,这些条件(令人烦恼地)会在每个
重写规则
指令之前被注入。请参阅以下内容了解更多信息。再次感谢,事实上,我可能不需要REWRITECOND中的第二行(“或”)条件,因为就在那之前,我很久以前添加了一个从请求中删除“www”的规则。在一次令人抓狂的调试冲刺后,我这样做了。冲刺显示,当访问者访问WWW.MYDOMAIN时设置的JavaScript cookies与MYDOMAIN访问时设置的cookies不同。显然,这种情况已经发生了很多次,因为我去过一些医疗网站,除非我访问WWW,否则找不到我的记录!因此,在没有WWW的情况下重新编写是我的解决方案。不过,我还是需要一本好的入门书!谢谢我会调查的。htaccess与我更频繁的javaScript和PHP编码不同,它的使用频率不足以让我在没有指导的情况下成功地完成任何事情。老实说,正则表达式仍然经常让我困惑。因此,我经常在没有100%理解的情况下粘贴解决方案,这是我讨厌做的事情。因此我寻找ELIF解释,这是一个愚蠢的首字母缩略词,意思是“像我五岁一样解释”。我相信它是从一个使用这个首字母缩写词的网站开始的,它邀请人们提问,并获得易于理解的答案。:-)
RewriteCond %{HTTP_HOST} ^subname\.example\.org$ [OR]
RewriteCond %{HTTP_HOST} ^www\.subname\.example\.org$
RewriteCond %{HTTP_HOST} ^(www\.)?subname\.example\.org$