htaccess WWW到非WWW无法正常工作

时间:2013-12-30 18:42:43

标签: wordpress apache .htaccess mod-rewrite

好的我知道这个问题没有得到很多回答,但我一直在使用各种不同的解决方案,但没有一个能为我工作。

我正在尝试在我的htaccess中使用mod_rewrite将所有www.domain.com重定向到domain.com - 足够标准。

该网站是一个wordpress网站,它总是对我有用,没有任何问题使用以下任何一个

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

或者

RewriteEngine On
RewriteCond %{HTTP_HOST}  ^www.domain.com [nocase]
RewriteRule ^(.*)         http://domain.com/$1 [last,redirect=301]

我也试过了其他一些,但似乎都没有用!

值得注意的是,以下内容也来自wordpress的htaccess

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

我还检查了mod_rewrite是否已启用,它似乎是基于此处尝试的方法How to check if mod_rewrite is enabled in php?(Christian Roy的解决方案)

服务器是一个小小的小滴,如果有帮助的话,Ubuntu 12.10托管了数字海洋?我按照本指南确保.htaccess已激活https://www.digitalocean.com/community/articles/how-to-use-the-htaccess-file(主要更改是将AllowOveride更改为ALL)

任何想法?我在这个阶段迷路了!

由于

根据要求更新了htaccess文件内容

 # BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST}  ^www\. [NC]
RewriteRule ^(.*)$   http://domain.com/$1 [R=301,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

**已更新虚拟主机文件**

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /home/wordpress/public_html

Servername domain.com

ServerAlias www.domain.com

<Directory /home/wordpress/public_html>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All   
    Order allow,deny
    allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

2 个答案:

答案 0 :(得分:0)

它会起作用,但你需要确定两件事:

  1. 您将www removal rule作为常规WP规则之前的第一条规则。
  2. 更新WP permalink settings以使博客/家庭地址为无

答案 1 :(得分:0)

RewriteEngine On
RewriteCond %{HTTP_HOST}  ^www\. [NC]
RewriteRule ^(.*)$   http://domain.com/$1 [R=301,L]

应该这样做。如前所述,它可能应该在 WP特定的重写之前完成