0

ColdFusion と組み合わせた mod_rewrite には奇妙な問題があります。

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]

1つのことを除いて、すべてが正常に機能しています:

http://www.example.com/test/?asdfこのようにURL.original_url読み取りを呼び出した場合、original_url=/test/index.php&asdfインデックスがある理由がわかりません。phpが入っています。

私はすでに PT フラグを省略しようとしましたが、それなしでは機能しません。たとえば、すべてのページがhttp://www.example.com/test/返さ403 - Forbiddenれ、ページのタイトルに「JRun サーブレット エラー」と表示されます。

これについてのアイデアをありがとう!

編集: わかりました、重要なことを見逃していました:フォルダー/test/は実際に私のドキュメントルートに存在します! のような他の URL/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/

4

0 に答える 0