Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ApacheHTTPD重定向两个不同的端口?_Apache_.htaccess_Ssl_Httpd.conf - Fatal编程技术网

如何使用ApacheHTTPD重定向两个不同的端口?

如何使用ApacheHTTPD重定向两个不同的端口?,apache,.htaccess,ssl,httpd.conf,Apache,.htaccess,Ssl,Httpd.conf,我将SSL设置到我的web应用程序。此应用程序的标准端口为8080,SSL端口为8443。我对apachehttpd配置有问题。我想重定向下面列出的所有URL: http://1.2.3.4:8080 https://1.2.3.4:8080 http://1.2.3.4:8443 要访问此url,请执行以下操作: https://1.2.3.4:8443 我将httpd.conf更改为: Listen 1.2.3.4:8080 <VirtualHost *:8080>

我将SSL设置到我的web应用程序。此应用程序的标准端口为8080,SSL端口为8443。我对apachehttpd配置有问题。我想重定向下面列出的所有URL:

http://1.2.3.4:8080
https://1.2.3.4:8080
http://1.2.3.4:8443
要访问此url,请执行以下操作:

https://1.2.3.4:8443
我将httpd.conf更改为:

Listen 1.2.3.4:8080

<VirtualHost *:8080>
    ServerName 1.2.3.4
    Redirect "/" "https://1.2.3.4:8443"
</VirtualHost>
听1.2.3.4:8080
服务器名1.2.3.4
重定向“/”https://1.2.3.4:8443"
对于上面列出的第一个url,它可以正常工作,但对于其他url则不行。我尝试了不同的配置,但都不起作用。有人能帮我解决这个问题吗

如果HTTP服务于端口8080,而HTTPS(SSL)服务于8443,则上述两个URL都无法访问以触发重定向。(?!)

在您的配置中,HTTP仅为端口8080,HTTPS仅为端口8443

参考资料:

在httpd.conf中配置mod_rewrite以实现这种重定向

例如:

LoadModule rewrite_module  modules/mod_rewrite.so
RewriteEngine on
<VirtualHost 1.2.3.4:8080>
  <IfModule mod_rewrite.c>
    RewriteCond %{SERVER_PORT} !^8443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [L,R]
  </IfModule>
</VirtualHost>

好吧,你说得对,我明白。但是有没有办法重定向
http://1.2.3.4:8443
https://10.200.200.91:8443
当httpd在端口8080上侦听时,HTTP重定向仅在服务器上解析请求后发生。如果HTTP正在侦听端口8080,则会发出类似
http://1.2.3.4:8443
根本无法正确解析,浏览器将超时。为了满足您的要求,您需要Apache在端口8080和8443(已与SSL共享?)上对HTTP进行应答—这在Apache AFAIK中是不可能的。我认为这可能与某种前端代理有关,它可以拦截和转移此类请求?第一个示例代码对我不适用。第二个与我在第一篇文章中的代码所做的相同。您在这里所做的只是实现一个标准的HTTP到HTTPS(临时)重定向,这不是OP所要求的。
LoadModule rewrite_module  modules/mod_rewrite.so
RewriteEngine on
<VirtualHost 1.2.3.4:8080>
  <IfModule mod_rewrite.c>
    RewriteCond %{SERVER_PORT} !^8443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [L,R]
  </IfModule>
</VirtualHost>
LoadModule rewrite_module  modules/mod_rewrite.so
RewriteEngine on
RewriteCond %{SERVER_PORT} =8080
RewriteRule ^(.*) https://%{HTTP_HOST}:8443/$1 [L,R]