从我目前的搜索来看,我遇到的问题与网站重定向问题略有不同。我需要将一个特定路由从一个域重定向到另一个域的不同端口上。
到目前为止,我已经尝试了简单的 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
一个Redirect
或RedirectMatch
!