【发布时间】:2023-04-11 11:26:02
【问题描述】:
我试图让 Apache 根据某些条件重写 URL,但它失败了。我曾尝试寻找答案,但空手而归。我们使用 Apache 作为我们的网络服务器,并将请求代理到 Tomcat 以使用我们的 Coldfusion/Lucee 代码。
基本上,当我访问 HTML 文件时,重写工作正常,但是当我尝试访问 CFM 或 CFC (Coldfusion) 文件时,它将完全忽略重写规则。我想要的是在通过代理之前重写 URL,但由于某种原因我无法让它工作。
提前感谢任何可以帮助我解决此问题的人。
这是在我的httpd.conf 文件中:
这是虚拟主机文件:
<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>
这是在 .htaccess 中:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteRule ^(.*) /index.cfm/$1 [L]
【问题讨论】:
标签: apache .htaccess mod-rewrite url-rewriting coldfusion