Если еще условие переадресации Apache 301

У меня есть несколько URL-адресов, которые выглядят примерно так:

  • stage-app-platform-com.something.com
  • stage.something.com
  • stage1.something1.com

Я хотел создать правило перенаправления Apache 301, которое, если URL-адрес содержит шаблон app-platform , должен перенаправлять на stage1.app .com и любой другой запрос, попадающий на сервер, должен быть перенаправлен на stage2.app.com. Для этого я написал следующее правило перенаправления:

RewriteRule ^stage-app-platform-com$ https://stage1.app.com/ [L,R=301]
RewriteRule ^(.*)$ https://stage2.app.com/ [L,R=301]

Теперь второе правило, которое гласит, что весь попавший трафик должен быть перенаправлен на https://stage2.app.com/ работает, но первое один, кажется, не работает. Если запрашивается первый URL-адрес, Apache перенаправляет на https://stage2.app.com/ вместо https://stage1.app. com /

Поскольку я новичок в написании правил перезаписи, мне это немного сложно. Буду признателен за любую помощь.

0
задан 11 August 2016 в 17:10
2 ответа

Попробуйте следующее.Но сначала очистите кеш браузера. Перенаправления часто кэшируются.

<if "%{HTTP_HOST} =~ /^stage-app-platform-com\./">
   Redirect permanent https://stage1.app.com/
</if>
<else>
   Redirect permanent https://stage2.app.com/
</else>
0
ответ дан 5 December 2019 в 09:41

RewriteRule не видит часть URL-адреса, содержащую имя хоста. Что вам нужно использовать, так это RewriteCond , что-то вроде:

RewriteCond "%{HTTP_HOST}" "^stage-app-platform-com\."
RewriteRule .* https://stage1.app.com/ [L,R=301]
RewriteRule .* https://stage2.app.com/ [L,R=301]

Это заставляет первое RewriteRule применяться только в том случае, если условие RewriteCond соответствует. В противном случае он должен пройти до второго RewriteRule .

Документация mod_rewrite находится здесь: http://httpd.apache.org/docs/current/ mod / mod_rewrite.html

0
ответ дан 5 December 2019 в 09:41

Теги

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