gpt4 book ai didi

Apache 在使用 mod_proxy 时忽略重写规则

转载 作者:行者123 更新时间:2023-12-04 16:47:25 24 4
gpt4 key购买 nike

我试图让 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]

最佳答案

您将需要使用 [P] 标志,它会导致请求由 mod_proxy 处理,并通过代理请求进行处理。

例如

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

成为

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

或者如果你需要像这样的第一个正斜杠

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

另请查看 [PT] 标志。

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

使用我在 Apache 配置文件中使用的内容更新答案(我没有虚拟主机配置,也没有 .htaccess,因为我不需要它们例)

我的规则是,如果我在请求 url 中有/x/,那么我会从/xml/子文件夹调用 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]

关于Apache 在使用 mod_proxy 时忽略重写规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37868990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com