У меня есть несколько URL-адресов, которые выглядят примерно так:
Я хотел создать правило перенаправления 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 /
Поскольку я новичок в написании правил перезаписи, мне это немного сложно. Буду признателен за любую помощь.
Попробуйте следующее.Но сначала очистите кеш браузера. Перенаправления часто кэшируются.
<if "%{HTTP_HOST} =~ /^stage-app-platform-com\./"> Redirect permanent https://stage1.app.com/ </if> <else> Redirect permanent https://stage2.app.com/ </else>
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