2013-06-10 2 views
1

у меня есть два отдельных WordPress сайтов на одном домене, один установлен следующим образом:Перенаправление все WWW к не-WWW включая субдомены

http://subdomain1.domain.tld and http://subdomain2.domain.tld. 
http://domain.tld redirects to subdomain1. 

мне нужно удалить все WWW. к не-www (теперь это работает как проверено на http://htaccess.madewithlove.be/), www.domain.com теперь возвращает domain.com, но я все равно получаю 404 страницу, возвращенную, когда я печатаю субдомен, добавленный с www.

Мой текущий код с предложениями @icabod теперь выглядит так.

# 301 redirect www to non-www url 
# including subdomains 

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    Options +Indexes 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{HTTP_HOST} ^www\.(.*) 
    RewriteRule (.*) http://%1/$1 [R] 
</IfModule> 

mod_rewrite работает с переадресациями, я не хочу использовать PHP перенаправление. У меня нет доступа к CNAME моего регистратора, поэтому я не могу перенаправить их туда. Я поместил файл .htaccess, в котором у меня есть код ниже в корневой папке, и попытался поместить его в корневую папку поддоменов.

Это заставляет меня бананы!

спасибо.

ответ

0

Не забывайте, что вы можете использовать часть выражения RewriteCond в правиле, так же, как вы можете сопоставить часть выражения RewriteRule:

RewriteCond %{HTTP_HOST} ^www\.(.*) 
RewriteRule (.*) http://%1/$1 [R] 

%1 соответствует части в фигурных скобках в RewriteCond, а $1 соответствует детали в RewriteRule. Это переписывание делает предположение, что вы используете только http на стандартном порту 80, но в основном удалите www. с начала запрошенного URI. С этого момента, перенаправляя domain.tld к subdomain1.domain.tld должен быть простым:

RewriteCond %{HTTP_HOST} ^example.com$ 
RewriteRule (.*) http://subdomain1.example.com/$1 [R] 

Как и в сторону, вы, вероятно, не следует использовать [R=301] до тех пор, пока у вас есть переписывание работает правильно, так как 301 означает, что это постоянное переписывание , но во время тестирования он подвержен изменениям.

+0

спасибо за ваш ответ, он действительно удаляет www с www.domain.tld, но он, однако, не удаляет www из www.subdomain.domain.tld, я не понимаю, почему, но это то, что мне нужно, возможно, я не очень хорошо объяснил в моем вопросе. –

+0

Он должен удалить начало 'www.' с любого хоста http (вы можете проверить его на [made-with-love] (http://htaccess.madewithlove.be/)), поэтому я бы предположил, что у вас есть другое правило, которое устанавливает WWW в поддомену. – icabod

+0

Вы правы; он действительно удаляет www из основного домена, включая субдомены; по крайней мере, в ссылке, которую вы мне прислали (спасибо за этот инструмент btw!), когда я живу, он все еще возвращает 404: / –

Смежные вопросы