如何在apache中将一个路由从某个域重定向到其他地方

如何在apache中将一个路由从某个域重定向到其他地方

从我目前的搜索来看,我遇到的问题与网站重定向问题略有不同。我需要将一个特定路由从一个域重定向到另一个域的不同端口上。

到目前为止,我已经尝试了简单的 301 重定向和重写,但无济于事。

代码如下

<VirtualHost *:80>                                                                                                                      
  ServerName blah.hardsoft.nexus.blah2.blah3.au/phpmyadmin                                                                           
  RewriteEngine on                                                                                                                      
  RedirectMatch "^blah.*nexus.*\/phpmyadmin$" "http://10.1.140.1:8080/phpmyadmin"                                                   
  #RedirectMatch ".*nexus.*" "http://10.1.140.1:8080/phpmyadmin"                                                                         

  #Redirect 301 / http://10.1.140.1:8080/phpmyadmin                                                                                     
  </VirtualHost>                                                                                                                          

<VirtualHost 10.1.140.1:8080>                                                                                                            
  ServerName phpmyadmin                                                                                                                  
  DocumentRoot /var/www-8080                                                                                                             
</VirtualHost> 

如你所见,我尝试了几次重定向匹配(一次非常广泛)和一次 301 重定向,但在所有情况下,我最终都会将其重定向到

 10.1.140.1/phpmyadmin

没有附加端口(至少我认为是这样)。

知道我应该怎么做吗?有可能吗?

答案1

您可以使用mod_rewrite端口号进行重定向。首先,mod_rewrite在您的服务器中启用(a2enmod rewrite),然后将其添加到您的配置中:

RewriteEngine on
RewriteRule "^/phpmyadmin(.*)$" "http://10.1.140.1:8080/phpmyadmin$1" [L,R=301,NE]

我猜想要重定向的 URL 以“/phpadmin”开头,这就是我在正则表达式中使用“^”的原因。如果这是错误的,则相应地更改规则。

使用的标志:

[L]- 最后一条规则,不进行进一步处理
[R=301]- 永久重定向
[NE]- 无需对特殊字符进行编码

然后重新启动服务器并测试。

编辑: 刚刚看到您RewriteEngine on的配置中有一个,所以mod_rewrite可能已经启用了。请注意,您只需要mod_alias一个RedirectRedirectMatch

相关内容