19

我为我的机器配置了外部 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>

请帮帮我。

4

6 回答 6

16

好的。您缺少重写条件

<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>

如果您不包含此条件,即使使用主机名也会重定向

于 2012-07-25T14:14:36.187 回答
1

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

CASE-1:当用户点击http://XX.XX.XX.XX/mainhttp://ayz-abc.mysite.com/main它应该被重定向到https://ayz-abc.mysite.com /主要的

配置:

#
# 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>
于 2012-07-26T08:04:08.033 回答
1

尝试这个:

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

您还可以查看重写日志,请参见此处

于 2012-07-25T12:52:30.040 回答
0

如果您不使用 API,而只是希望浏览器和爬虫访问 URL 而不是 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”,这有助于搜索引擎。如果您将站点移至新域,则应使用相同的解决方案。

于 2015-09-28T07:45:28.153 回答
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>
于 2019-12-22T10:35:09.897 回答
-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。

谢谢

于 2018-12-19T13:59:21.023 回答