【问题标题】:.htaccess Rewrite Rules for subdomain.htaccess 子域的重写规则
【发布时间】:2010-09-26 20:46:36
【问题描述】:

我使用 codeigniter 作为我在主域上的主要安装。我创建了一个子域和一个名为 live 的文件夹,例如live.domain.com 映射到 public/live 。但是在公共场合我使用 codeigniter。

我现在有了动态 codeigniter url:

http://domain.com/api/

我想映射到我的子域:

https://live.domain.com

所以去:

https://live.domain.com/api/functioname

将使用脚本:

http://domain.com/api/apifunctioname

并且可能:

http://domain.com/api/apifunctioname/parameter1/parameter

一切都在同一台服务器上,因此不需要重定向。

有人对使用哪些重写规则有任何想法吗?

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^live\.domain\.com [NC]
RewriteRule (.+)$ "http://domain.com/api/$1" [L]

以上内容作为重写效果很好,但重定向到http://domain.com/api/functionname 而我希望它路由;这样去的时候:

https://live.domain.com/api/functioname

它停留在那个 url 但使用

的脚本
http://domain.com/api/functionname

非常感谢,

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    下面的内容怎么样:

    重写引擎开启 RewriteCond %{HTTP_HOST} ^live\.domain\.com$ [NC] RewriteRule (.+)$ "https://domain.com/api/$1" [L,P]

    【讨论】:

    • 谢谢,不过我试过了,但我得到了一个 404 Not Found - 非常奇怪
    • 我可能应该提到它未经测试。您是否尝试过提高 mod_rewrite 日志级别,并分析到底发生了什么?
    • 您应该将“^live\.domain\.com”作为 RewriteCond,并且应该有第二个 RewriteCond 检查 /api/ URL。
    • 我一直在搜索我的服务器,但在任何地方都找不到日志文件;我一直在寻找 rewrite.log
    • 另外,当我在 .htaccess 中设置 RewriteLogLevel 3 时,出现 500 错误
    【解决方案2】:

    只需添加index.php,见下文

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^live\.domain\.com$ [NC]
    RewriteRule (.+)$ "https://domain.com/index.php/api/$1" [L,P]
    

    【讨论】:

      猜你喜欢
      • 2012-06-11
      • 2011-11-21
      • 2012-07-31
      • 1970-01-01
      • 2013-05-23
      • 2014-03-06
      • 2012-08-12
      • 2018-10-16
      • 1970-01-01
      相关资源
      最近更新 更多