htaccess子域名SSL通配符未打开文件

3

好的,我遇到了一个关于我的htaccess如何工作的问题。

我刚刚购买了我的主域名和子域名的ssl通配符。我使用的是Bluehost,他们建议添加以下内容:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain.example.com$
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subdomain/$1
RewriteCond %{HTTP_HOST} ^subdomain.example.com$
RewriteRule ^(/)?$ subfolder/index.php [L]

目前我只有这个...


在此刻,我所拥有的是这个...
RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain\.com
RewriteRule ^(.*)$ https://www.domain.com/$1 [L]

RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . sub_folder/index.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L]

这个方案可以解决问题,但是我无法让文件在打开时不进行重定向...

如果我打开sub.domain.com/file/fil1.js,它会打开index.php,而这正是我不想要的。

但如果我使用/browse或类似的东西,它可以正常工作...

2个回答

1

好的,在尝试了很多次之后,发现文件请求未包含子域文件夹,导致无法找到文件位置。所以我进行了手动检查,得到了以下结果。它似乎正好满足我的需求。我不确定是否有更有效率的方法,但这就是我得到的。

#-------------------SUB.DOMAIN.COM---------------------
RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteCond %{DOCUMENT_ROOT}/sub_folder%{REQUEST_URI} -f
RewriteRule . %{DOCUMENT_ROOT}/sub_folder%{REQUEST_URI} [L]

RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . sub_folder/index.php [L]
#--------------------------------------------------------------

替代

RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . sub_folder/index.php [L]

0

你需要更改第二条规则,使其仅在请求为^(/)?$时应用,然后你需要复制Bluehost告诉你要做的事情。基本上,替换:

RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . sub_folder/index.php [L]

使用他们告诉你要用的工具:

RewriteCond %{HTTP_HOST} ^sub.domain.com$
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subdomain/$1 [L]
RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteRule ^/?$ /sub_folder/index.php [L]

好的,我已经做到了。现在的情况是,在 sub.domain.com 的 URL 上会加载 sub_folder/index.php 文件,但是如果我输入 sub.domain.com/file/location.php 这个确切的文件路径,它会加载我的主站点的 index.php 文件。我希望它能像在子域名上一样正常地打开 sub_folder/file/location.php 文件。 - Kevin Upton
@KevinUpton 我漏掉了一个 [L],但是在你的主站点中,只有当 sub_folder/file/location.php 不存在(或者你请求的任何内容不存在)时,才会加载 /index.phpRewriteCond %{REQUEST_FILENAME} !-f 条件确保了这一点。 - Jon Lin
你说得对,我认为那就是导致它无法工作的问题所在 :/ 哈哈 - Kevin Upton
当我删除最后一个将其重定向到索引的位,以测试它是否实际获取该文件时,它会出现错误... - Kevin Upton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接