Apache mod_rewrite将请求URI添加到URL参数,使用ColdFusion处理它

Apache mod_rewrite将请求URI添加到URL参数,使用ColdFusion处理它,apache,mod-rewrite,coldfusion,jrun,Apache,Mod Rewrite,Coldfusion,Jrun,我对结合ColdFusion的mod_rewrite有一个奇怪的问题: 我在virtualhost配置中使用以下重写规则: RewriteEngine On RewriteRule ^$ index.cfm [L] # Add trailing slash if missing RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d Rewr

我对结合ColdFusion的mod_rewrite有一个奇怪的问题:

我在virtualhost配置中使用以下重写规则:

RewriteEngine On

RewriteRule ^$ index.cfm [L]

# Add trailing slash if missing
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(?i)^[\\/]CFFileServlet
RewriteCond %{REQUEST_URI} !index.cfm
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301]

# Clean up multiple slashes in URL
RewriteCond %{HTTP_HOST} !=""
RewriteCond %{THE_REQUEST} ^[A-Z]+\s//+(.*)\sHTTP/[0-9.]+$ [OR]
RewriteCond %{THE_REQUEST} ^[A-Z]+\s(.*/)/+\sHTTP/[0-9.]+$
RewriteRule .* http://%{HTTP_HOST}/%1 [R=301,L]

# Pass all non physically existing files/folders to index.cfm in URL.original_url
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/cms/
RewriteRule ^(.*)$ /index.cfm?original_url=$1 [QSA,PT,L]
除了一件事外,一切正常:

如果我呼叫
http://www.example.com/test/?asdf
my
URL.original\u URL
读起来像这样
original\u URL=/test/index.php&asdf
,我不明白为什么会有索引。php

我已经试过去掉PT标志,但是没有它就不行了。所有页面,例如
http://www.example.com/test/
return
403-禁止
页面标题中写着“JRunServlet错误”

谢谢你对这一点的任何想法

编辑: 好的,我错过了一件重要的事情:文件夹
/test/
实际上存在于我的documentroot中!其他URL如
/test/does\u not\u exist/
不受所述问题的影响

总结如下:

http://www.example.com/test/
->
URL.original\u URL
获取
/test/index.php


http://www.example.com/test/does_not_exist/
->
URL.original\u URL
获取
/test/不存在/
,这是我的预期行为。

我猜
index.php
目录索引中的第一个选项,因此/test/实际上是/test/index.php。不知道如何避免$1中的默认文档,但是。Seybsen-我不认为Sergii是正确的。您的重写规则是否会抢占默认文档并在其位置写入index.cfm?这就是规则在我看来的样子。也许有apache指令或其他什么?我和你在一起-我认为去index.cfm没什么用。你确定加载了此规则集而不是其他规则集吗?
DirectoryIndex
中的@Sergii第一个值是
index.html
@MarkAKruger,我已经仔细检查了.htaccess或virtualserver的配置中是否有其他重写规则或类似规则。