Я перепробовал все варианты, которые смог найти (нашел примеры в Stack Overflow и в других местах, но они тоже не работают в моей ситуации).
Вот мой исправленный файл .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 обнаружил, что сервер перенаправляет запрос на этот адрес способом, который никогда не будет завершен.
Однако в окне URL-адреса браузера отображается желаемый пункт назначения 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, чтобы поисковые системы не запутались в двух разных способах доступа к одному и тому же контенту.





Можешь попробовать добавить это в свой htaccess
Redirect 301 /snafu http://snafu.com