无法启用 Apache 重写

无法启用 Apache 重写

我是 Apache 新手。

最终目标是使用 Apache 作为反向代理(使其工作)并通过 mod-rewrite 将特定值附加到查询字符串(无法使其工作)。

有问题的字符串是:

http://localhost:9089/views/JavaScriptTarget/Dashboard

...我想附加?Category=Furniture:

http://localhost:9089/views/JavaScriptTarget/Dashboard?Category=Furniture

我已经启用了该模块:

#LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule sed_module modules/mod_sed.so

我有尝试在许多地方启用重写日志:

<Directory />
    Options All
    AllowOverride All
    LogLevel debug rewrite:trace8
    RewriteEngine On    # Turn on the rewriting engine
    RewriteRule    ^Dashboard$    Dashboard?Category=Furniture    [NC]
</Directory>

...和:

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel debug rewrite:trace8

...在这两种情况下,我都没有在 error.log 中看到 [rewrite] 的提及

最后,这里是 httpd.conf 中包含重写规则本身和反向代理内容的部分:

<Directory />
    Options All
    AllowOverride All
    LogLevel debug rewrite:trace8
    RewriteEngine On    # Turn on the rewriting engine
    RewriteRule    ^Dashboard$    Dashboard?Category=Furniture    [NC]
</Directory>

#####Proxy Rule
ProxyRequests Off

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

ProxyPass / http://server8/
ProxyPassReverse / http://server8/

当我执行字符串时,http://localhost:9089/views/JavaScriptTarget/Dashboard我被正确地重定向到http://server8/views/JavaScriptTarget/Dashboard...但?Category=Furniture未被附加。

知道我在这里做错了什么吗?我已经束手无策了。我甚至无法让重写错误显示在日志中!

顺便说一下,我在 Windows x64(Win7)上使用 2.4.4......

答案1

您的 RewriteRule "^Dashboard$" 意味着 URL 字符串在 "Dashboard" 之前和之后都没有任何内容。这是您想要的吗?您的 URL 似乎为 "/views/JavaScriptTarget/Dashboard"。

也许这并不重要,但我不会将 RewriteRule 放入配置中 - 在“Directory”指令上我不是专家,因为我主要使用 Apache 进行反向代理,而我最终并没有使用它。

因此,所有这些最终都将代理到您的后端服务器“server8”。再次确保您的 server8 上没有任何使用服务器主机名进行重定向的内容。如果您明白我的意思,您可以使用“/”进行重定向,但不能使用“{servername}/”进行重定向。

我将设置以下配置来实现您的要求。

RewriteEngine On
RewriteRule    ^/views/JavaScriptTarget/Dashboard    /views/JavaScriptTarget/Dashboard?Category=Furniture [PT]


ProxyPass / http://server8/
ProxyPassReverse / http://server8/

相关内容