我为我的机器配置了外部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帮助我。
答案 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)
答案 2 :(得分:1)
这对我有用。在apache的httpd.conf中添加配置
CASE-1:当用户点击http://XX.XX.XX.XX/main或http://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。
谢谢