@PRodion

Как сделать редирект с www и index.php?

Есть:

site.local/article
Так же эта страница доступна по:
site.local/index.php/article
www.site.local/article
www.site.local/index.php/article

Как правильно сделать редирект? Мой .htaccess:
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
@dodo512
Сразу после RewriteEngine On добавить
RewriteRule ^index\.php/(.*) http://site.local/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule .* http://site.local/$0 [R=301,L]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Fragster
@Fragster
помогло? отметь решением!
Проще завернуть всё на уровне хоста с www на без него, в конфиге апача (не в .htaccess) надо найти, где описываются хосты и добавить псевдоним для www с редиректом:
<VirtualHost *:80>
    ServerName www.example.com
    Redirect permanent / http://example.com/
</VirtualHost>

<VirtualHost *:80>
    ServerName example.com
    # real server configuration
</VirtualHost>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы