1

在 OS X Lion 和 Coldfusion 9 开发人员版上运行 Apache。我有以下 .htaccess 文件。

Options +FollowSymlinks
Options +Indexes RewriteEngine on RewriteBase /

RewriteCond %{REQUEST_URI} !=/index.cfm [NC]
RewriteRule ^([^/]+)/?$ /index.cfm?page=$1 [L,NC]
RewriteRule ^([^/]+)/([^/]+)/?$ /index.cfm?app=$1&page=$2 [L,NC]

它旨在处理诸如 mydomain.com/something 和 mydomain.com/something/else 之类的 URL。很正常的东西。

一切似乎都工作正常,直到我加载一个带有 cfimport 标记的文件,如下所示:

<cfimport prefix="myLib" taglib="/lib/tags">

RewriteLog 显示这会被拾取、处理和重定向,这当然会破坏一切。

我尝试添加几个条件,例如:

RewriteCond %{REQUEST_URI} !=lib/tags/ [NC]
    RewriteCond %{REQUEST_URI} !=lib/tags [NC]
    RewriteCond %{REQUEST_URI} !=/lib/tags/ [NC]
    RewriteCond %{REQUEST_URI} !=/lib/tags [NC]
    
他们都没有阻止这个问题。

如果我重组目录以便像这样加载它:

<cfimport prefix="myLib" taglib="/lib/dir/tags">
一切都很好。这不是一个选项,因为这是一个小组开发项目,我是唯一一个有问题的人,Windows/IIS 是目标部署环境。

顶部显示的基本 .htaccess 文件似乎可以在运行 Apache 的同事 Windows 机器上工作。

4

1 回答 1

1

我不知道 cfimport 为什么/如何导致 mod_rewrite 触发 - 它甚至不应该为此与 Web 服务器对话。

也许您需要在 CF admin 中创建/lib映射?


无论如何,您可以通过在开头添加一个否定的前瞻来停止重写规则,告诉它忽略lib/tags,如下所示:

(?!lib/tags)

把它放在^第二个表达式之后。

于 2011-11-15T19:06:11.640 回答