2015-02-19 3 views
0

Я хочу наложить префикс «www» на моем сайте. Я знаю, что в сети есть все, но я использую Silex, и трюк заключается в том, чтобы заставить его работать вместе..htaccess force www. и Silex

Вот мой файл .htaccess:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    ErrorDocument 404 /404.html 
    RewriteRule ^$ index.php?/ [QSA,L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    #RewriteCond %{HTTP_HOST} !^$ 
    #RewriteCond %{HTTP_HOST} !^www\. [NC] 
    #RewriteCond %{HTTPS}s ^on(s)| 
    RewriteRule (.*) index.php?/$1 [QSA,L] 
    #RewriteRule (.*) http%1://www.%{HTTP_HOST}%/index.php?/$1 [R=301,L] 
    #RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
</IfModule> 
+0

Поместите правила 'www' сначала ... – DarkBee

ответ

1

У вас есть куча условий просто перемешано в файле Htaccess, что выглядит как случайный порядок. RewriteCond работает только для первых RewriteRule, следующих за ними.

Если вы поместите этот

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

в верхней части HTAccess после RewriteEngine On и перед вашими другими правилами, он должен обрабатывать ваш WWW вопрос

Я также поставил бы ErrorDocument 404 /404.html в нижней части ваших правил перезаписи так как он не переписывается и не должен находиться в блоке правил, запутывающих вещи.

</IfModule> 
ErrorDocument 404 /404.html 

Если это работает для вас, дайте мне знать.

+0

У меня также есть auth, настроенный после ** ** Я сделал то, что сказал, но когда я пытаюсь перейти на ссылку www, i 'm перенаправляется на www.example.com/401.shtml и появляется приглашение для входа в систему. ** Редактирование: ** Это происходит, только когда я открываю страницу в закрытом окне: O –

+1

Это еще одна проблема с конфигурацией, с которой вы работаете. Кажется, что перенаправление работает. Удалите кеш браузера, прежде чем пытаться использовать правила. Также вы используете панель управления? –

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