Правило перезаписи: переписать все для субдомена, кроме запросов, соответствующих определенному шаблону - PullRequest
2 голосов
/ 31 октября 2011

Я пытаюсь сделать 301 постоянное перенаправление для

assets.example.com/x/y/z?a=b

на

example.com/x/y/z?a=b

, если

x == assets

Контекст здесь - CDNотправляет исходные запросы к assets.example.com.Субдомен assets.example.com имеет тот же DocumentRoot и, следовательно, тот же robots.txt, что и example.com.Таким образом, в настоящее время теоретически возможно получить доступ к любой странице через субдомен assets.example.com вместо example.com.Я хотел бы перенаправить все в поддомен assets.example.com, кроме реальных ресурсов (которые находятся в каталоге / assets /).

1 Ответ

1 голос
/ 04 июля 2012

Вот, пожалуйста, - я проверял это на Apache 2.2. Должно работать с любой последней версией.

  RewriteEngine On
  RewriteCond %{REQUEST_URI} !^/assets
  RewriteCond %{HTTP_HOST} ^assets\.example\.com
  RewriteRule ^/(.*) http://example.com/$1 [R=301,L]

Логика здесь в том, что условия перезаписи И объединяются. Он просто проходит через вещи, которые должны быть правдой, чтобы сделать перенаправление. Сначала проверяется, не является ли первый сегмент пути / assets. Затем он проверяет, является ли имя хоста assets.example.com. Если оба из них верны, тогда он выполняет перенаправление на постоянной основе и завершает набор правил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...