我需要重定向 subdomain.example.com -> subdomain.example.com:32400/web
我当前的 htaccess 是:
Options -MultiViews +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain.example.com [NC]
RewriteRule (.*) http://subdomain.example.com:32400/web [R=301,L]
AuthUserFile /var/.htpasswd
AuthName Welcome
AuthType Basic
require user someone
IndexOptions +ShowForbidden
ErrorDocument 401 /error401.html
ErrorDocument 404 /errorGeneric.html
ErrorDocument 500 /errorGeneric.html
但是,在启用重定向的情况下,我不断收到 500 个内部服务器错误,如果重定向未激活,则 .htaccess 可以正常工作
答案1
对于简单的情况,您不需要使用mod_rewrite
。使用可能就足够了mod_proxy相反;类似于:
ProxyPass / http://subdomain.example.com:32400/web
ProxyPassReverse / http://subdomain.example.com:32400/web
(未经测试)
答案2
您是否尝试过RewriteLog
使用RewriteLogLevel
上述指令0
?
您是否可能遇到重写死锁;端口上运行什么服务32400
?
编辑:的可用性RewriteLog
取决于 Apache 版本;对于 Apache 2.4+,LogLevel
指令规则也会重写日志记录(请参阅LogLevel 文档),例如LogLevel rewrite:trace4
答案3
如果您的错误文档由 Apache 而不是后端服务器进程(服务于端口 32400)提供,则需要保护它们不被重写;例如:
RewriteCond !^/error(401|Generic).html
在你之前RewriteRule
(你可以链接1到n所有条件都需要满足,下列条件RewriteRule
才能执行)。