mod_rewrite将REQUEST_URI添加到URL参数,使用ColdFusion处理它

时间:2012-07-10 15:28:07

标签: apache mod-rewrite coldfusion jrun

我和mod_rewrite结合使用ColdFusion有一个奇怪的问题:

我在virtualhost-configuration中使用了以下重写规则:

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我的URL.original_url读取此original_url=/test/index.php&asdf,我无法弄清楚为什么会有索引。 php

我试过已经遗漏了PT-flag,但没有它就行不通。所有页面例如http://www.example.com/test/返回403 - Forbidden并在页面标题中显示“JRun Servlet Error”。

感谢您对此有任何想法!

修改 好的,我错过了一些重要的事情:文件夹/test/实际上存在于我的文档中!其他网址如/test/does_not_exist/ 受所述问题的影响。

总结:

http://www.example.com/test/ - > URL.original_url获取/test/index.php

http://www.example.com/test/does_not_exist/ - > URL.original_url得到/test/does_not_exist/这是我预期的行为。

0 个答案:

没有答案