2015-01-28 2 views
-1

Я хочу перенаправить https://www.example.com в https://example.com. Я следовал this answer, но это не сработало. Кстати, ErrorDocument 404 не работает.Как удалить «www» через перенаправление mod_rewrite?

Что мне нужно делать? Вот мой файл:

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteBase/

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

RewriteCond %{HTTPS} on 
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L] 
AddType application/x-httpd-php html 

ErrorDocument 404 https://kocer.org/index.php?p=notfound 
</IfModule> 
+0

Сбрасывание правил 'mod_rewrite' здесь на самом деле не способ задать вопрос - большинство из этих правил не имеют отношения к проблеме. Во-первых, найдите ["mod_rewrite remove www"] (https://duckduckgo.com/?q=mod_rewrite+remove+www), и если это не удается, прочитайте документы для 'RewriteRule' и сообщите нам, где вы получаете застрял. Если вам нужна дополнительная помощь, пожалуйста, подкорректируйте свой вопрос/код на код, относящийся к проблеме. – halfer

+0

я отредактировал сообщение –

+0

У вас есть соответствующий тег тега для ''? Если нет, это не сработает и, вероятно, просто вызовет ошибку 500. – halfer

ответ

0

Вы можете использовать это:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase/

    RewriteCond %{HTTP_HOST}#%{HTTPS}s ^www\.([^#]+)#(?:off|on(s)) [NC] 
    RewriteRule^http%2://%1%{REQUEST_URI} [NE,L,R=301] 
</IfModule> 
AddType application/x-httpd-php html 
ErrorDocument 404 /index.php?p=notfound 

ErrorDocument Directive
Обратите внимание, что при указании ErrorDocument, который указывает на удаленный URL (то есть что-нибудь с методом, таким как HTTP. перед ним), HTTP-сервер Apache отправит переадресацию клиенту, чтобы сообщить ему, где найти документ, даже если документ попадает на тот же сервер. Это имеет несколько последствий, самое главное, что клиент не получит исходный код состояния ошибки, а вместо этого получит код статуса перенаправления. Это, в свою очередь, может запутать веб-роботов и других клиентов, которые пытаются определить, действителен ли URL-адрес, используя код состояния.

+0

Ошибка внутреннего сервера! –

+0

Вы используете только этот код в своем .htaccess? – Croises

+0

Нет, весь текст. https://kocer.org/stackover.htaccess –

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