2013-11-14 41 views
4

对于IP规范化,我被告知需要将站点的IP地址重定向到域名。我正在运行一个标准的WordPress安装程序,它已经附带了它自己的.htaccess文件。我在下面通过添加“重定向”行对其进行了修改:301使用标准WordPress .htaccess文件重定向IP地址

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

Redirect 301 http://12.34.56.789 http://www.domainname.com 

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

但是,它不起作用。任何人都知道什么是错的?

谢谢!

回答

8

您通常不希望混合使用Redirect(mod_alias)和RewriteRule(mod_rewrite),因为它们都应用于相同的URI,并且有时会打破其他人的更改。只需坚持使用mod_rewrite,因为你有使用它的wordpress规则。

更换

Redirect 301 http://12.34.56.789 http://www.domainname.com 

有:

RewriteCond %{HTTP_HOST} ^12\.34\.56\.789$ 
RewriteRule ^(.*)$ http://www.domainname.com/$1 [L,R=301] 
+4

重写条件可以用'RewriteCond%{HTTP_HOST}^\ d + \。\ d + \。\ d + \。\ d + $'来表达更为宽松 - 无需将此规则限制为单个IP地址。 –

+0

我没有意识到有什么不同(重定向vs重写)。谢谢! – Yazmin

+0

@squeamishossifrage问题是,如果服务器实际监听多个IP地址,并且不同的主机名可映射到不同的IP地址。如果将所有IP重定向到单个主机名,则会丢失该映射。 –

0

乔恩林的回答为我工作,但我不得不使用

RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.789$ 
RewriteRule ^(.*)$ http://www.domainname.com/$1 [L,R=301] 

,而不是

RewriteCond %{HTTP_HOST} ^12\.34\.56\.789$ 
RewriteRule ^(.*)$ http://www.domainname.com/$1 [L,R=301]