Я как бы новичок в использовании mod_rewrite в .htaccess, пожалуйста, простите меня. Я искал по всему миру ответ, но, возможно, я не смотрю в нужных местах или, возможно, .htaccess - это даже не подходящее место для такого рода вещей.Apache Redirect (используя .htaccess)
Скажем, у меня есть два домена: joebloggs.com и bloggs.com.
Когда вы joebloggs.com
в вашем браузере, я хотел бы, чтобы перенаправить https://www.bloggs.com/joe
.
Однако, если вы идете в joebloggs.com/foobar
, я хотел бы перенаправить https://www.bloggs.com/foo/bar
.
Примечание: Я знаю, что это кажется контрпродуктивным, переходя от более короткий URL, чтобы более длинный, но проблема заключается в том, что маркетинговые материалы уже были распространены с URL joebloggs.com/foobar
...: -/
То, как я пытался структурировать это в файле .htaccess, пока не работает.
<IfModule mod_rewrite.c>
RewriteEngine on
#
# redirect joebloggs.com/foobar to https://www.bloggs.com/foo/bar
RewriteCond %{HTTP_HOST} ^joebloggs\.com\/foobar [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.joebloggs\.com\/foobar [NC]
RewriteRule ^(.*)$ https\:\/\/www\.bloggs\.com\/foo\/bar [L,R=301,NC]
#
# redirect joebloggs.com to https://www.bloggs.com/joe
RewriteCond %{HTTP_HOST} ^joebloggs\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.joebloggs\.com$ [NC]
RewriteRule ^(.*)$ https\:\/\/www\.bloggs.com\/joe [L,R=301,NC]
</IfModule>
Когда я положил joebloggs.com
в браузере, он перенаправляет правильно https://www.bloggs.com/joe
- но когда я пытаюсь идти к joebloggs.com/foobar
, то URL остается неизменным и, таким образом, переходит на страницу 404 (потому что это не существует).
Что я делаю неправильно? Я не делаю этого оптимальным способом или не использую .htaccess/mod_rewrite, как он был предназначен?
Извините за то, что я долготерплен, надеюсь, что дал достаточно информации. Спасибо за любую помощь и время, потраченное на это!
Спасибо - я попробую это и посмотрю, как это работает! В то же время, как насчет первого набора правил делает его бесполезным? Это просто, что он избыточен, когда заменен набором, который вы предоставили? – theRBF
@theRBF Переменная 'HTTP_HOST' не получает URL-адрес. – hjpotter92
Хорошо, спасибо @ hjpotter92, это объяснение имеет смысл. Я попробовал ваше предложение, и это не сработало для меня, но ... Я просто немного изменил свой проблемный код, потому что понял, что способ, которым я его представлял, был немного запутанным и, возможно, вас немного сбил (извините что). Таким образом, я хотел бы перенаправить 'joebloggs.com/foobar' на' https: // www.bloggs.com/foo/bar', но также и 'joebloggs.com' на' https: // www .bloggs.com/joe'. – theRBF