Apache modrewrite перенаправление htaccess - PullRequest
0 голосов
/ 28 августа 2018

Я перепробовал все варианты, которые смог найти (нашел примеры по переполнению стека и в других местах, но они также не работают для моей ситуации).

Вот мой исправленный файл .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, чтобы поисковые системы не путались в двух разных способах доступа к одному и тому же контенту.

1 Ответ

0 голосов
/ 28 августа 2018

Можете ли вы попробовать добавить это в свой htaccess

Redirect 301 /snafu http://snafu.com
...