2016-06-16 12 views
2

Apacheに特定の条件に基づいてURLを書き直させようとしていますが、失敗しています。私は答えを探してみましたが、空の手が出てきました。私たちはWebサーバーとしてApacheを使用し、Coldfusion/Luceeコードを使用するためにTomcatへの要求をプロキシしています。mod_proxyを使用しているときにApacheが書き換えルールを無視する

基本的には、HTMLファイルにアクセスしているときに書き換えがうまく動作していますが、CFMまたはCFC(Coldfusion)ファイルにアクセスしようとすると、書き換えルールは完全に無視されます。私が望むのは、プロキシを通過する前にURLを書き直すことですが、何らかの理由でそれを動作させることができません。

私はこれを解決するのを助けることができる誰にも先ずありがとう。

これは私のhttpd.confファイルにあります。これは、.htaccessファイルである

<VirtualHost *:80> 
    ServerName dev.xxxxx.com 
    DirectoryIndex default.cfm index.cfm index.htm index.html 
    DocumentRoot "Z:/XXXXXXXXX" 

    <Directory "Z:/XXXXXXXXX"> 
     Require all granted 
     Allow from all 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
    </Directory> 


    <Proxy *> 
     Allow from 127.0.0.1 
    </Proxy> 
    RewriteEngine On 
    DirectoryIndex index.cfm 
    ProxyPreserveHost On 
    ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://localhost:7009/$1$2 

</VirtualHost> 

スニペットhttpd.conf

<IfModule proxy_module> 
    <Proxy *> 
    Allow from 127.0.0.1 
    </Proxy> 

    ProxyPreserveHost On 
    ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://127.0.0.1:7009/$1$2 
    ProxyPassMatch ^/(.+\.cfchart)(/.*)?$ ajp://127.0.0.1:7009/$1$2 
    ProxyPassMatch ^/(.+\.cfml)(/.*)?$ ajp://127.0.0.1:7009/$1$2 
    ProxyPassReverse/ajp://127.0.0.1:7009/ 
</IfModule> 

の底部に向かっ:

ここ

は、仮想ホストのファイルであります

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /$1 [L,R=301] 
RewriteRule ^(.*) /index.cfm/$1 [L] 

答えて

2

mod_proxyが要求を処理し、プロキシ要求によって処理される[P]フラグを使用する必要があります。例えば

RewriteRule ^(.*) /index.cfm/$1 [L] 

RewriteRule ^(.*) /index.cfm/$1 [PL] 

なったり、

RewriteRule ^/(.*) /index.cfm/$1 [PL] 

のようにスラッシュ最初が必要な場合も[PT]フラグを見てみましょう。私は私のApacheの設定ファイルで働いているものと解答を更新

https://httpd.apache.org/docs/current/rewrite/flags.html

(「Iは、仮想ホストの設定を持っていないと私はドンので、私は.htaccessファイルを持っていません

私のルールは、/ x /要求のURLがある場合、私は/ xml/subfolderからindex.cfmを呼び出します。

ProxyRequests Off 

ProxyVia Off 

ProxyPreserveHost On 

<Proxy *> 
    AddDefaultCharset off 
    Order deny,allow 
    Allow from all 
</Proxy> 

ProxyPass/http://127.0.0.1:8080/ 
ProxyPassReverse/http://127.0.0.1:8080/ 


RewriteEngine On 
RewriteRule ^/x/(.*)$ /xml/index.cfm [PT] 
+0

これは機能しません。ファイル拡張子として.cfmまたは.cfcを含むファイルを無視しています – Yamaha32088

+0

私が働いているもので答えを更新しました。 –

関連する問題