Apache 如果主机名不正确,则htaccess重定向

Apache 如果主机名不正确,则htaccess重定向,apache,.htaccess,redirect,phpmyadmin,Apache,.htaccess,Redirect,Phpmyadmin,我运行的服务器有多个vhost,phpMyadmin被设置为别名,可以通过anydomain.com/phpMyadmin访问。我想使用一个.htaccess重定向规则,这样如果服务器管理员url上没有访问phpmyadmin,那么访问者就会被重定向到(比如)Google 正确的URL应该是:https://server.domain.com:9090/phpmyadmin 有人能帮我吗 谢谢 这是最简单的方法 RewriteEngine On RewriteCond %{HTTP_HOST}

我运行的服务器有多个vhost,phpMyadmin被设置为别名,可以通过anydomain.com/phpMyadmin访问。我想使用一个.htaccess重定向规则,这样如果服务器管理员url上没有访问phpmyadmin,那么访问者就会被重定向到(比如)Google

正确的URL应该是:
https://server.domain.com:9090/phpmyadmin

有人能帮我吗


谢谢

这是最简单的方法

RewriteEngine On
RewriteCond %{HTTP_HOST} !^server.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.google.com/$1 [L,R]
也许你还需要检查端口,然后使用

RewriteCond %{SERVER_PORT} !^9090$ [OR]
RewriteCond %{HTTP_HOST} !^server.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.google.com/$1 [L,R]
更新

再次阅读您的问题,我发现您也在尝试从http切换到https

我建议在https关闭时添加一个检查:

RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} !^server.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.google.com/$1 [L,R]

如果您的VirtualHost配置了https,那么您应该特别注意如何以最简单的方式实现这一点

RewriteEngine On
RewriteCond %{HTTP_HOST} !^server.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.google.com/$1 [L,R]
也许你还需要检查端口,然后使用

RewriteCond %{SERVER_PORT} !^9090$ [OR]
RewriteCond %{HTTP_HOST} !^server.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.google.com/$1 [L,R]
更新

再次阅读您的问题,我发现您也在尝试从http切换到https

我建议在https关闭时添加一个检查:

RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} !^server.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.google.com/$1 [L,R]

如果您的VirtualHost配置了https,您应该特别注意如何

Hi,freedev。谢谢。如果phpMyadmin加载到不同的主机上,则重定向可以很好地工作。但如果我只是使用server.domain.com/phpmyadmin,即没有9090端口,它仍然会加载。我的主要问题是,如果没有端口,它将无法获得正确的SSL证书。这里的最佳解决方案是什么?我认为真正的问题是如何将这两个条件包括为“非此即彼”。我试着先放一个带有端口的,然后在最后添加
[或]
,但它不起作用。我做错了什么?@zkvvoob您是否尝试添加第二条规则?就像我的答案一样,但在本例中只添加
RewriteCond%{SERVER\u PORT}!9090
就在
重写规则
之前。它应该可以正常工作(不使用任何
[或]
)是的,我已经这样做了。正如我所说,如果域错误,重定向可以正常工作,但是如果端口丢失-它不工作,即phpMyadmin仍然加载(但是使用不正确的SSL证书)。这应该可以工作,我在回答中更新了
RewriteCond
,只是为了更清楚,无论如何建议启用重写调试Hi,freedev。谢谢。如果phpMyadmin加载到不同的主机上,则重定向可以很好地工作。但如果我只是使用server.domain.com/phpmyadmin,即没有9090端口,它仍然会加载。我的主要问题是,如果没有端口,它将无法获得正确的SSL证书。这里的最佳解决方案是什么?我认为真正的问题是如何将这两个条件包括为“非此即彼”。我试着先放一个带有端口的,然后在最后添加
[或]
,但它不起作用。我做错了什么?@zkvvoob您是否尝试添加第二条规则?就像我的答案一样,但在本例中只添加
RewriteCond%{SERVER\u PORT}!9090
就在
重写规则
之前。它应该可以正常工作(不使用任何
[或]
)是的,我已经这样做了。正如我所说,如果域错误,重定向可以正常工作,但是如果端口丢失-它不工作,即phpMyadmin仍然加载(但是使用不正确的SSL证书)。这应该可以工作,我在回答中更新了
RewriteCond
,只是为了更清楚,无论如何建议启用重写调试