Spring 在Apache中为其他端口重写规则

Spring 在Apache中为其他端口重写规则,spring,apache,.htaccess,mod-rewrite,url-rewriting,Spring,Apache,.htaccess,Mod Rewrite,Url Rewriting,我的Apache(Tomcat)-Spring服务器在端口8080上运行。我想调用localhost默认端口(80),并希望重定向到端口8080 我启用了mod rewrite,下面的规则可以正常工作 RewriteRule ^orange.html$ apple.html 我从中阅读了apache的重写规则 但是,以下规则不起作用: RewriteEngine On # Turn on the rewriting engine RewriteCond %{SERVER_PORT} !^

我的Apache(Tomcat)-Spring服务器在端口8080上运行。我想调用localhost默认端口(80),并希望重定向到端口8080

我启用了mod rewrite,下面的规则可以正常工作

RewriteRule ^orange.html$ apple.html
我从中阅读了apache的重写规则

但是,以下规则不起作用:

RewriteEngine On    # Turn on the rewriting engine
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*)         http://localhost:8080/$1 [L,R]
我的意图是允许跨域支持,而不在SpringController中启用CORS。(这是一条硬规则)

htaccess位于/var/www/html中。
此外,我不希望在端口8080上重定向其他请求,但在本地主机/(我指定的字符串)上的请求除外。

您可以在root.htaccess中使用此规则:

RewriteEngine On

RewriteCond %{SERVER_PORT} =80
RewriteRule ^my_specified_string http://localhost:8080%{REQUEST_URI} [NC,L,R]

ProxyPass是这里需要的,而不是重写引擎

下面是
/etc/apache2/sites available
中的
000 default.conf
中的配置行

ProxyPass /servlet-name http://localhost:8080/servlet-name
ProxyPassReverse /servlet-name http://localhost:8080/servlet-name
这将
/servlet name
上的任何请求改为
http://localhost:8080/servlet-名称

可以用各自的servlet名称替换上面的“servlet名称”

更多信息请点击此处: 在这种情况下,“重定向”不是正确的术语。 ProxyPass和ProxyPassReverse指令设置了一个反向代理,因此您没有将浏览器重定向到新的URL,而是在一个端口上接受流量,并通过apache httpd(mod_proxy)将该流量反向代理到目标服务器:port