Вопрос по .htaccess, redirect, ssl, subdomain, security – Перенаправить поддомен, используя htaccess и Keep URL

1

Я искал и в то время как я нашел много тем близко, ни одно не было именно то, что я ищу ...

На моем сайте, например, example.com, я создал поддомен secure.example.com.

Этот поддомен будет иметь SSL.

Я хочу перенаправить запросы наhttps://secure.example.com/path/ на www.example.com/path/, сохраняя при этом URL какhttps://secure.example.com/path/

обратите внимание, что цель subdomain.example.com - для SSL, поэтому перенаправление выше должно работать с SSL

Я хотел бы использовать несколько других перенаправлений в htaccess: 1) перенаправить не-www на www, игнорируя субдомены (поэтому secure.example.com не становится www.secure.example.com) 2) перенаправить /index.php в / 3) и последнее, но не менее важное - принудительное использование SSL на secure.example.com.

Кроме того, программное обеспечение корзины покупок имеет дополнительные операторы htaccess для функциональности и SEO, как показано ниже.

My current root htaccess:
# Prevent Directoy listing 
Options -Indexes

# Prevent Direct Access to files
<FilesMatch "\.(tpl|ini|log)">
 Order deny,allow
 Deny from all
</FilesMatch>

# Turn Rewrite Engine On
RewriteEngine On

## index.php to root
Options +FollowSymlinks
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.example.com/ [R=301,L] 

## non-www to www ignore subdomains
RewriteCond %{HTTP_HOST} ^example.com [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
Обаexample.com а такжеsecure.example.com на том же хосте и тот же корень документа? У вас загружен mod_proxy? Jon Lin
Осталось только перенаправить, как в моем первоначальном посте. Что касается mod_proxy, я не знаю, но я держу пари, что он не установлен. Я отправил билет своему хозяину, чтобы узнать наверняка. Bob
Мой хост говорит, что mod_proxy установлен. Моя конфигурация Apache показывает, что они установлены: proxy_module (статический) proxy_connect_module (статический) proxy_ftp_module (статический) proxy_http_module (статический) proxy_ajp_module (статический) proxy_balancer_module (статический) Bob
Да, они находятся на одном хосте и в одном корне документа. Поддомен - это буквально подпапка в корневой настройке с поддоменом. С помощью моего хоста у нас теперь есть правильное разрешение и установлен SSL. Bob

Ваш Ответ

1   ответ
1

Ну специально для URLhttps://secure.example.com/path/ отображать содержимое, найденное наhttp://www.example.com/path/Есть 2 вещи, которые вы можете сделать. Лучше всего, если 2 домена обслуживаются из одного корня документа:

they are on the same host and same document root. The subdomain is literally a subfolder under the root setup with a subdomain. With help from my host we now have it resolving properly and the SSL installed.

Подкаталог может быть проблемой, так как он не может быть в состоянии переписатьout своего собственного корня документа. Например:

domain -> document root www.example.com -> /path/to/htdocs secure.example.com -> /path/to/htdocs/secure

Если у вас был файл .htaccess в/path/to/htdocs/secure переписать запросы наhttps://secure.example.com/, Проблема в том, что вам нужно переписать в родительский каталог, и apache не позволит вам сделать это. Если бы все было наоборот, вы могли бы переписать запросы наhttp://www.example.com/ в/secure, Кроме того, если два домена имеют одинаковый корень документа, вы также можете переписать. Но не в том случае, если безопасный является подкаталогом к корневому каталогу документа www.

My host says that mod_proxy is installed. My Apache config shows these are installed: proxy_module (static) proxy_connect_module (static) proxy_ftp_module (static) proxy_http_module (static) proxy_ajp_module (static) proxy_balancer_module (static)

Это означает, что вы можете по крайней мере использоватьP перепишите флаг, чтобы отправить запрос в mod_proxy, чтобы вы могли сделать что-то вроде этого:

RewriteEngine On
RewriteRule ^path/$ http://www.example.com/path/ [L,P]

в файле htaccess в корне документа secure.example.com. Это будет только прокси конкретно URI/path/и ничего подобного/path/foo/bar.html, Если вы хотите, чтобы все начиналось с/path/, тогда вы можете сопоставить это:

RewriteRule ^path/(.*)$ http://www.example.com/path/$1 [L,P]

Если есть проблемы с перенаправлением, вы можете прибегнуть кProxyPass вместо:

ProxyPass / http://www.example.com/
ProxyPassReverse / http://www.example.com/

Он делает то же самое, за исключением того, что перезаписывает заголовки местоположений, поэтому перенаправления также получают прокси.

Благодарю. Я пытался (как SSL, так и не) и ничего не получил. Я все еще вижу свой тестовый файл на secure.example.com, а не тот, что на example.com. Просматривая ваш пост, я только что кое-что понял, я не имел в виду этот "путь". было бы буквально, я использовал путь, как и все, что идет после secure.example.com Bob
404-ые ушли. Корень htaccess был причиной этого. Но частично безопасные предупреждения остаются. Bob
@Bob Это может быть вызвано ссылками вwww.example.com домен с использованием FQDN, например:<img src=http://www.example.com/images/foo.jpg>, что поднимет это предупреждение.
@Bob Вы можете просто удалитьpath/ и от регулярного выражения и от цели техRewriteRuleпотом.
Я удалил «путь /» и теперь это отчасти работает. SSL предупреждает, что страницы только частично зашифрованы. Сертификат принадлежит secure.example.com, а ссылки на странице, которые указывают на фактический домен (www.example.com), возвращают 404s. Bob

Похожие вопросы