2016-05-19 2 views
-1

Я хочу, чтобы объединить эти два .htaccess правила для веб-сайта:Как совместить правила .htaccess?

RewriteRule ^newsletter\.html$ https://fleio.com/newsletter [L,R=301] 
RewriteRule ^newsletter[/]?$ newsletter.html [L] 

Если только один активен, он делает то, что он должен делать. Но когда я использую их оба, я получаю ошибку

слишком много перенаправлений.

https://docs.google.com/document/d/1M6rYkEV-tmO7wRSJYjGtGOFow-76ZvbODnnjiqCh1m0/edit?usp=sharing

+0

Вы перенаправлять один к другому, и наоборот, это петля. Какие URL-адреса вы хотите перенаправить где? – Halcyon

+1

мы не ходим «снаружи», чтобы посмотреть на код. вставьте его здесь в качестве редактирования на ваш вопрос –

+0

RewriteRule^newsletter \ .html $ https://exanple.com/newsletter [L, R = 301] RewriteRule^newsletter [/]? $ newsletter.html [L] – badrhari

ответ

0

Ваше второе правило внутренне перенаправлять запрос на то же место (первый Рю) несколько раз, так что вы получаете ошибку цикла. Вы должны использовать RewriteCond и сопоставлять с переменной the_request, чтобы предотвратить цикл перезаписи.

Попробуйте это:

RewriteEngine on 

RewriteCond %{THE_REQUEST} /newsletter\.html [NC] 
RewriteRule^/newsletter/ [L,R] 
RewriteRule ^newsletter/?$ /newsletter.html [NC,L] 
+1

Спасибо, ты! Работа прекрасна. – badrhari

+0

Добро пожаловать @badrhari Если вы находитесь на apache '2.4.' , вы можете использовать флаг ** END ** во внутреннем rewriteRule, чтобы предотвратить цикл перезаписи. Следующий пример работает на Apache 2.4 и более поздних версий: 'RewriteRule^\ .html рассылку $ https://fleio.com/newsletter [L, R = 301] RewriteRule^рассылку [/ ]? $ newsletter.html [END] ' – starkeen

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