【问题标题】:mod_rewrite fails to redirect into the lib foldermod_rewrite 无法重定向到 lib 文件夹
【发布时间】:2011-11-22 16:47:58
【问题描述】:

我有一个重写器,它适用于除 lib 文件夹之外的所有内容。规则是

重写规则 ^/uk(.*) $1

这是一组更复杂的规则之一,但我已禁用除此之外的所有规则。 该规则适用于除 lib 文件夹内容之外的所有内容:

http://site.local/lib/cookies.js 有效,但 http://site.local/uk/lib/cookies.js 无效。

网站上的所有其他路径都可以重定向,例如:

http://site.local/uk/course/view.php?id=15 转到http://site.local/course/view.php?id=15

  • 名称中只有三个字母的其他文件夹有效。
  • uk/otherpath/lib 有效。
  • lib 文件夹中没有 htaccess 文件
  • 站点根目录中没有 htaccess 文件(规则在虚拟主机定义中)
  • 问题出现在 ubuntu 和 redhat(开发和生产)上
  • 问题出现在同事工作站上的另一个 Moodle 站点上
  • lib 文件夹的权限与目录树的其余部分相同

我错过了什么?!? 求助!!!!!!!!!

--- 编辑 ---

RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 9

给我

127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e1b270/initial] (2) init rewrite engine with requested uri /uk/lib/cookies.js
127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e1b270/initial] (3) applying pattern '^/uk(.*)' to uri '/uk/lib/cookies.js'
127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e1b270/initial] (2) rewrite '/uk/lib/cookies.js' -> '/lib/cookies.js'
127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e1b270/initial] (2) local path result: /lib/cookies.js
127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e1b270/initial] (1) go-ahead with /lib/cookies.js [OK]
127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e232b0/initial] (2) init rewrite engine with requested uri /favicon.ico
127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e232b0/initial] (3) applying pattern '^/uk(.*)' to uri '/favicon.ico'
127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e232b0/initial] (1) pass through /favicon.ico

所以在我看来这应该可行吗?

【问题讨论】:

    标签: linux apache mod-rewrite moodle


    【解决方案1】:

    我建议打开 RewriteLog 并增加 RewriteLogLevel 以获取有关 Apache 正在做什么的更多信息。

    【讨论】:

    • 好地方,我已添加到问题中。
    【解决方案2】:

    在我的本地机器上搞砸了这个之后,在检查 document_root/lib 目录之前,Apache 似乎正在重写你文件系统上的 /lib。

    您应该将 Rewrite 更改为:

    RewriteRule ^/uk(.*) %{DOCUMENT_ROOT}$1
    

    【讨论】:

      猜你喜欢
      • 2017-03-09
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-13
      • 2012-08-03
      相关资源
      最近更新 更多