【问题标题】:How to redirect ip to domain name?如何将ip重定向到域名?
【发布时间】:2020-02-01 19:09:03
【问题描述】:

我使用 Apache 网络服务器,我想将所有 url 从 ip 重定向到域。这是我网站.htaccess文件的内容:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L,NE]

Options -Indexes

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([\s\S]*)$ index.php?rt=$1 [L,B,QSA]

根据一些研究,我想我需要这样的东西:(不确定)

RewriteBase /
RewriteCond %{HTTP_HOST} ^95\.216\.161\.63$
RewriteRule ^([\s\S]*)$ https://lamtakam.com/$1 [L,R=301]

但我不知道应该如何(在哪一部分)将这三行添加到.htaccess 文件中。有什么线索吗?

【问题讨论】:

    标签: apache .htaccess redirect ip


    【解决方案1】:

    您应该在https/www重定向规则之前或之后插入IP重定向规则:

    Options -Indexes
    RewriteEngine on
    
    RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
    RewriteCond %{HTTPS} !on
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L,NE]
    
    RewriteCond %{HTTP_HOST} ^95\.216\.161\.63$
    RewriteRule ^ https://lamtakam.com%{REQUEST_URI} [L,R=301,NE]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([\s\S]*)$ index.php?rt=$1 [L,B,QSA]
    

    如果您想让您的 IP 匹配条件更通用,请使用:

    RewriteCond %{HTTP_HOST} ^\d+\.\d+\.
    

    能够匹配任何 IP 地址。

    【讨论】:

    • 我明白了,非常好。只是一个简短的问题,您为什么将^([\s\S]*)$ 替换为.*? .. 你知道,我的网站是波斯语的,有些网址会被.* 破坏,但[\s\S] 匹配所有内容,这就是我使用它的原因
    • 好的,谢谢,我今天自己测试一下。同时请继续使用[\s\S]*
    • 不,不需要 AFAIK,因为域名不允许 REQUEST_URI 中允许的所有字符
    • 我试过了,效果很好,再次感谢。只是出于好奇,不需要使用RewriteBase /
    • 是的 RewriteBase / 在这里只是一个语法糖。默认情况下,它用于为任何相对目标和非重定向规则(如最后一个)添加前缀,当前路径已以 mod_rewrite 引擎为前缀。
    猜你喜欢
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 2012-04-16
    相关资源
    最近更新 更多