Я перепробовал все варианты, которые смог найти (нашел примеры по переполнению стека и в других местах, но они также не работают для моей ситуации).
Вот мой исправленный файл .htaccess:
DirectoryIndex index.html
RewriteEngine On
# New Try - apparently does nothing
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?fubar\.com
RewriteCond %{REQUEST_URI} ^\/?snafu\/?(.*)$
RewriteRule ^(.*) https://snafu.com/%1 [R,L]
# First try - apparently does nothing
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?fubar\.com
RewriteRule ^\/?snafu\/?(.*)$ https://snafu.com/$1 [R,L]
# this works as expected
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?fubar\.com
RewriteRule ^(.*)$ https://www.fubar.com/$1 [R,L]
Я показываю выше два способа, которые я пытался вызвать
http://www.fubar.com/snafu
перенаправить на
http://snafu.com
Ни один из абзацев ничего не делает.
Последний абзац в файле работает как положено, поэтому я знаю, что Apache
делает все правильно.
Очевидно, что файл работает в некоторых случаях, но я не могу понять, что происходит в других случаях.
Как и предполагалось, я заменил весь свой код выше на:
DirectoryIndex index.html
Redirect 301 /snafu https://snafu.com
Когда я пытаюсь перейти к http://www.fubar.com/snafu/index.html
Я получаю сообщение Firefox: страница не перенаправляется должным образом
Firefox обнаружил, что сервер перенаправляет запрос на этот адрес способом, который никогда не будет завершен.
Однако в окне браузера в браузере отображается желаемое место назначения https://snafu.com/index.html
Отчеты Chrome: страница snafu.com не работает
snafu.com перенаправил вас слишком много раз.
ERR_TOO_MANY_REDIRECTS
Опять же, в окне браузера URL отображается желаемое место назначения https://snafu.com/index.html
Internet Explorer говорит: не найдено
Запрашиваемый URL /snafu.com/index.html не найден на этом сервере.
Opera говорит: страница snafu.com не работает snafu.com перенаправляла вас слишком много раз.
Safari говорит: Safari не может открыть страницу "https://snafu.com/index.html", потому что Safari не может установить безопасное соединение с сервером" snafu.com "
Не знаю, важно ли это, но и fubar.com, и snafu.com имеют один и тот же IP-адрес - если я очищаю кеш браузера, я могу без проблем перейти на https://snafu.com/index.html, и снова похоже, что Apache делает свое дело правильно.
Корневой каталог snafu.com содержит файл .htaccess, приведенный ниже, который, кажется, работает должным образом:
DirectoryIndex index.html
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?snafu.fubar\.com
RewriteRule ^(.*)$ https://snafu.com/$1 [R,L]
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?snafu\.com
RewriteRule ^(.*)$ https://snafu.com/$1 [R,L]
Удаление этого файла не меняет поведение браузера.
Мой предварительный вывод заключается в том, что простая команда Redirect 301 / snafu https://snafu.com сбита с толку, поскольку и snafu, и fubar имеют одинаковый IP-адрес. Но ModRewrite должен быть умнее - я просто недостаточно умен, чтобы придумать правильное заклинание.
Куда я иду не так? Моя цель - сделать так, чтобы все существующие ссылки, ссылающиеся на fubar.com/snafu, были перенаправлены на snafu.com, чтобы поисковые системы не путались в двух разных способах доступа к одному и тому же контенту.