【问题标题】:htaccess subdomain ssl wildcard not opening filehtaccess 子域 ssl 通配符未打开文件
【发布时间】:2012-11-12 13:34:52
【问题描述】:

好的,所以我遇到了我的 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 或类似的操作...

【问题讨论】:

    标签: .htaccess ssl subdomain wildcard bluehost


    【解决方案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]
    

    【讨论】:

      【解决方案2】:

      您需要更改第二条规则,使其仅在请求为^(/)?$ 时应用,然后您需要复制 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 就像它通常在子域上一样......
      • @KevinUpton 我遗漏了[L],但只有在sub_folder/file/location.php 不存在(或者您最终请求的任何内容不存在)时才会加载主站点中的/index.phpRewriteCond %{REQUEST_FILENAME} !-f 条件确保了这一点。
      • 没错,我认为这是导致它无法工作的原因:/哈哈
      • 当我删除将其重定向到索引的最后一位,以测试它是否真正获取文件时,它会出现错误...
      猜你喜欢
      • 2014-04-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 2016-10-21
      • 2019-05-12
      • 2021-11-14
      相关资源
      最近更新 更多