Apache: перенаправление всего каталога в корневой каталог другого сайта
Я хочу перенаправить все из определенного подкаталога в корень другого сайта, т.Е. без подкаталогов:
-
example.com/jobs
следует перенаправить наjobs.example.net
- все пути позади
/jobs
должны быть опущены- Таким образом,
example.com/jobs/foo
также следует перенаправить наjobs.example.net
- Таким образом,
Эта последняя часть является самой сложной, так как с Redirect 301 /jobs jobs.example.net
путь /foo
не пропущен. Таким образом, example.com/jobs/foo
перенаправляется на jobs.example.net/foo
, который выдает 404 Not Found
ошибка, так как эта страница не существует.
Как я могу добиться того, чтобы путь был опущен при перенаправлении?
1 answers
Это невозможно с mod_alias Redirect
, но с RedirectMatch
. Если вы используете регулярное выражение, но оставляете $1
s для для (.*)
из URL, он перенаправит на этот точный URL.
RedirectMatch 301 "^/jobs(.*)" "http://jobs.example.net/"
Затем вы, вероятно, найдете много примеров того, как это сделать с помощью mod_rewrite, но вам следует избегать его использования, когда есть альтернатива mod_alias, как указано выше. Для полноты картины, вот mod_rewrite альтернатива:
RewriteEngine on
RewriteRule "^/jobs" "http://jobs.example.net/" [R=301,L]
Оба перенаправят все, начиная с /job
, включая /joblessness
; не только URL-адреса /job
и /job/*
. Если вы хотите избежать этого, вы можете поместить правила в раздел <Directory /path/to/jobs>
.