簡體   English   中英

在Apache中為其他端口重寫規則

[英]Rewriting rules in Apache for a different port

我的Apache(Tomcat)-Spring服務器在端口8080上運行。我想調用localhost默認端口(80),並希望重定向到端口8080。

我啟用了mod-rewrite, DigitalOcean的以下規則可以正常工作。

RewriteRule ^orange.html$ apple.html

我從Apache URL重寫文檔中讀取了Apache的重寫規則

但是,以下規則不起作用:

RewriteEngine On    # Turn on the rewriting engine
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*)         http://localhost:8080/$1 [L,R]

我的意圖是允許跨域支持而不在spring控制器中啟用CORS。(這是一個硬規則)

.htaccess位於/ var / www / html中。 另外我不希望其他請求在端口8080上重定向,除了本地主機/(my_specified_string)上的請求

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-name

可以將上面的“ servlet-name”替換為其各自的servlet名稱。

此處的更多信息: http : //httpd.apache.org/docs/2.2/mod/mod_proxy.html

您可以在根.htaccess中使用此規則:

RewriteEngine On

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

在這種情況下,“重定向”不是正確的術語。 ProxyPass和ProxyPassReverse指令設置了反向代理,因此您沒有將瀏覽器重定向到新的URL,而是在一個端口上接受流量,並將通過Apache httpd(mod_proxy)的流量反向代理到目標服務器:端口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM