Apache httpd.conf用于将ip重定向到hostname

时间:2012-07-25 12:40:55

标签: redirect virtualhost apache

我为我的机器配置了外部IP和主机名。

在应用程序内部,我只使用域名来访问API。因此,当我尝试通过IP地址访问我的API时,它显示302 Moved暂时出错。 因此,对于使用IP地址命中服务器的请求(对于主页),它应该重定向到主机名。

也就是说,当用户点击https://XX.XX.XX.XX/main时,应将其重定向到https://ayz-abc.mysite.com/main

为此,我尝试使用apache的httpd.conf中的重定向。

<VirtualHost XX.XX.XX.XX>

DocumentRoot "/var/www/html"
#ServerName ayz-abc.mysite.com/

 # Other directives here
 RewriteEngine On
 RewriteRule /.* https://ayz-abc.mysite.com/ [R]

</VirtualHost>

我也试过以下

<VirtualHost *.portnum>
DocumentRoot "/var/www/html"
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule  https://XX.XX.XX.XX/main https://ayz-abc.mysite.com/main [R=301,L]
</VirtualHost>

Plsssss帮助我。

6 个答案:

答案 0 :(得分:10)

确定。你错过了重写条件

<VirtualHost XX.XX.XX.XX>

DocumentRoot "/var/www/html"
#ServerName ayz-abc.mysite.com/

 # Other directives here
 RewriteEngine On
 RewriteCond %{HTTP_HOST} !^ayz-abc.mysite.com$
 RewriteRule /.* https://ayz-abc.mysite.com/ [R]

</VirtualHost>

如果您不包含此条件,则即使使用主机名

也会重定向

答案 1 :(得分:1)

试试这个:

RewriteRule $ https://ayz-abc.mysite.com/ [L,R]

您还可以看到重写日志see here

答案 2 :(得分:1)

这对我有用。在apache的httpd.conf中添加配置

CASE-1:当用户点击http://XX.XX.XX.XX/mainhttp://ayz-abc.mysite.com/main时,应将其重定向到https://ayz-abc.mysite.com/main

配置:

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80
<VirtualHost *:80>
ServerName XX.XX.XX.XX
Redirect /main https://ayz-abc.mysite.com/main
</VirtualHost>

案例2:当用户点击https://XX.XX.XX.XX/main时,应将其重定向到https://ayz-abc.mysite.com/main

配置:

NameVirtualHost *:443
<VirtualHost *:443>
DocumentRoot "/var/www/html"
#Server Name 
ServerName XX.XX.XX.XX
SSLEngine on
SSLOptions +StrictRequire
# Redirect to the specified URL 
Redirect /main https://ayz-abc.mysite.com/main
<Directory />
SSLRequireSSL
</Directory>
....
....
</VirtualHost>

答案 3 :(得分:0)

如果您不使用API​​但只是希望浏览器和抓取工具转到网址而不是IP地址,那么您可以使用RedirectPermanent。

<VirtualHost XX.XX.XX.XX>

    RedirectPermanent / http://ayz-abc.mysite.com/

</VirtualHost>

<VirtualHost XX.XX.XX.XX>

    DocumentRoot "/var/www/html"
    ServerName ayz-abc.mysite.com/

</VirtualHost>

它具有响应301 HTTP状态的优势,它表示“请使用您将来重定向到的URL”,这有助于搜索引擎。如果将站点移动到新域,则应使用相同的解决方案。

答案 4 :(得分:0)

这会将所有对IP的请求重定向到您域中的类似请求

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{HTTP_HOST} ^12\.34\.56\.78$

RewriteRule ^/(.*)$  https://ayz-abc.mysite.com/$1 [L,R=301]

</IfModule>

答案 5 :(得分:-1)

如果您使用的是 https 域,则不要添加以下内容:

# BEGIN HTTPS Redirection Plugin
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} ^XX\.XX\.XX\.XX$
RewriteRule ^(.*)$ https://your-domain-name.com/$1 [L,R=301]
</IfModule>
# END HTTPS Redirection Plugin

我们在网站上使用https重定向插件。上面的代码块是由插件生成的,我们在代码块中仅添加了两行。以下两行负责将IP设置为“域重定向”:

RewriteCond %{HTTP_HOST} ^XX\.XX\.XX\.XX$
RewriteRule ^(.*)$ https://your-domain-name.com/$1 [L,R=301]

此处 ^ XX.XX.XX.XX $ 是您的IP地址,将其替换为: ^ 12.34.56.78 $ 与您的服务器IP。

谢谢