Динамическая обработка htaccess поддоменов, пропущенного трафика и HTTPS - PullRequest
1 голос
/ 27 сентября 2019

Я все еще довольно новичок в .htaccess и RegEx и очень расстроен этим, но я, вероятно, слишком усложняю.В основном:

  • HTTP_HOST будет одним из нескольких доменов и должен сохраняться как есть, включая субдомены, за исключением www. всегда должно быть удалено
  • только domain1 и «domain2» имеют SSL, поэтому HTTPS должен быть принудительно установлен, но любые другие должны быть вынуждены HTTP
  • , если первая подпапка после имени домена foo, затем переписать так, чтобы foo был поддоменом, а не подпапкой.
  • после этого, , если foo. является поддоменом :
    • сохранить всех отсутствующих / запрещенных папок / файлов в видимом URL (будетобрабатывается позже)
    • фактическая страница для любого из них находится по адресу foo.*.com/index.php
  • отсутствующие / запрещенные страницы не наfoo Субдомен все еще должен быть отправлен на \index.php в корне, с которым я сейчас работаю:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ /index.php [last,nocase]
    

Моя попытка:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www. [NC] 
RewriteRule ^(.*)$ $1 [L] 
RewriteCond %{HTTP_HOST} domain1\.ca [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L]
RewriteCond %{HTTP_HOST} !domain1\.ca [NC]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L]
RewriteCond %{REQUEST_URI} ^/foo.* [NC]
RewriteRule ^ %{REQUEST_SCHEME}://foo\.%{HTTP_HOST}%{REQUEST_URI} [L]
RewriteRule "^/foo/(.+)" "%{REQUEST_SCHEME}://foo.%{HTTP_HOST}/$1" [L,NS,QSA,R=301]

Некоторые примеры:

incoming url:                               should become:
http://www.domain1.com/foo/blah          => https://foo.domain1.com/blah
https://example.com/foo/blah.html        => http://foo.example.com/blah.html
http://www.domain1.com/foo/index.php/foo => https://foo.domain1.com/foo
https://example.com/blah/blah.html       => http://example.com/blah/blah.html 

Надеюсь, это имеет смысл (я перегружен и запоздал!) - Спасибо!

...