Расширение домена изменения mod_rewrite Apache

Я хочу иметь 4 условных mod_rewrite.

http to https
http://example.com to https://example.com

www. to non-www.
https://www.example.com to https://example.com

non-plural ending to plural ending domain
https://www.example.com to https://examples.com

.com (or that is not .co) domain extension to .co
https://www.example.com to https://examples.co

У меня пока есть этот код:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.co%{REQUEST_URI} [L,NE,R=301]

У меня возникли проблемы с поиском примера для создания изменений example на examples и .com (или других не-.co) на .co .

Могу ли я добавить что-то в приведенный выше код или мне нужно также создать еще один RewriteRule?

Обратите внимание, я хочу сохранить все поддомены (кроме www.). Также, если кто-то пишет www.subdomain.example.com, я хочу сохранить поддомен, но удалить ведущий www. и измените example.com на examples.co.

1
задан 14 February 2019 в 22:12
1 ответ

സബ്ഡൊമെയ്നുകളെ സംബന്ധിച്ച നിങ്ങളുടെ അധിക "കുറിപ്പ്" ശരിക്കും ഇവിടെ പ്രധാന സങ്കീർണതയാണ്.

അതിനാൽ, കാനോനിക്കൽ ഡൊമെയ്ൻ example.co ആണ്. കാനോനിക്കൽ ഡൊമെയ്‌നല്ലാതെ മറ്റെന്തെങ്കിലും അഭ്യർത്ഥന കാനോനിക്കൽ ഡൊമെയ്‌നിലേക്ക് റീഡയറക്‌ട് ചെയ്യേണ്ടതുണ്ട്.

ഇനിപ്പറയുന്നവ പരീക്ഷിക്കുക:

RewriteEngine On

# Redirect HTTP to HTTPS and remove any www subdomain and trailing dot (FQDN)
# NB: Potentially includes a subdomain
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+?)\.?$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=302]

# Canonicalise the hostname "examples.co" and retain an optional subdomain
# NB: The www (sub)subdomain has already been removed.
#     Potentially includes a subdomain.
RewriteCond %{HTTP_HOST} !examples\.co$
RewriteCond %{HTTP_HOST} ^([^.]+\.)?examples?\. [NC]
RewriteRule ^ https://%1examples.co%{REQUEST_URI} [L,NE,R=302]

ആദ്യ നിയമം പ്രാഥമികമായി ഐച്ഛികമായ www സബ്ഡൊമെയ്ൻ (അല്ലെങ്കിൽ ഉപ-ഉപഡൊമെയ്ൻ) നീക്കംചെയ്യുന്നു. % 1 ബാക്ക് റഫറൻസിൽ ഹോസ്റ്റ്നാമം www സബ്ഡൊമെയ്ൻ (എന്തെങ്കിലുമുണ്ടെങ്കിൽ) കുറവാണ്, കൂടാതെ ഏതെങ്കിലും പിന്നിലുള്ള ഡോട്ട് (ഒരു എഫ്ക്യുഡിഎൻ) കുറവാണ് - കോണ്ട്പാറ്റേൺ ^ (?: Www \) പിടിച്ചെടുത്തത്. ? (. +?) \.? $ .

രണ്ടാമത്തെ നിയമം ഡൊമെയ്ൻ നാമത്തെ കാനോനിക്കൽ ചെയ്യുന്നു. ഏത് ഓപ്‌ഷണൽ സബ്‌ഡൊമെയ്‌നും ക്യാപ്‌ചർ ചെയ്യുന്നു (% 1 ബാക്ക് റഫറൻസിൽ) ഇതിന് ശേഷമുള്ള എല്ലാം അവഗണിക്കപ്പെടും. അഭ്യർത്ഥിച്ച ഹോസ്റ്റ്നാമം example.co (ആദ്യത്തെ വ്യവസ്ഥ പ്രകാരം) അവസാനിക്കുന്നില്ലെന്ന് ഞങ്ങൾക്കറിയാം.

ഇത് പരമാവധി 2 റീഡയറക്‌ടുകൾക്ക് കാരണമാകും. കാനോനിക്കൽ അല്ലാത്ത ഡൊമെയ്ൻ അഭ്യർത്ഥിക്കുമ്പോഴാണ് രണ്ടാമത്തെ റീഡയറക്‌ട് സംഭവിക്കുന്നത്.

ഉദാഹരണത്തിന്:

  • അഭ്യർത്ഥന http://www.examples.co/foo => https: // ഉദാഹരണങ്ങൾ .co / foo .
  • അഭ്യർത്ഥന http://www.example.com/foo => https://example.com/foo => https://examples.co/foo .
  • അഭ്യർത്ഥന http://www.subdomain.example.com/ => https://subdomain.example.com / => https://subdomain.examples.co/ .

കാഷെചെയ്യൽ പ്രശ്‌നങ്ങൾ ഒഴിവാക്കാൻ 302 (താൽക്കാലിക) റീഡയറക്‌ടുകൾ ഉപയോഗിച്ച് പരീക്ഷിക്കുക. ഇത് ശരിയായി പ്രവർത്തിക്കുന്നുവെന്ന് നിങ്ങൾ സ്ഥിരീകരിച്ചുകഴിഞ്ഞാൽ മാത്രം 301 ലേക്ക് മാറ്റുക. പരിശോധനയ്‌ക്ക് മുമ്പ് നിങ്ങളുടെ ബ്ര browser സർ കാഷെ മായ്‌ക്കേണ്ടതുണ്ട്.

നിങ്ങൾ എച്ച്എസ്ടിഎസ് നടപ്പിലാക്കുന്നില്ലെന്ന് ഇത് അനുമാനിക്കുന്നു. നിങ്ങളാണെങ്കിൽ, അതേ ഹോസ്റ്റിൽ ആദ്യം നിങ്ങൾ എച്ച്ടിടിപി എച്ച്ടിടിപിഎസിലേക്ക് റീഡയറക്ട് ചെയ്യേണ്ടതുണ്ട്.

നിങ്ങൾ സ്റ്റാൻഡേർഡ് വൈൽഡ്കാർഡ് സബ്ഡൊമെയ്‌നുകൾ ഉപയോഗിക്കുകയാണെങ്കിൽ (നിങ്ങളുടെ മറ്റ് ചോദ്യത്തിൽ ) തുടർന്ന് https: // www. . എന്നതിനായുള്ള ഒരു അഭ്യർത്ഥന ബ്ര the സർ നിർത്തലാക്കും (തൽഫലമായി റീഡയറക്‌ട് സംഭവിക്കില്ല), കാരണം SSL സർട്ടിഫിക്കറ്റ് സാധുവായിരിക്കില്ല .

1
ответ дан 3 December 2019 в 23:07

Теги

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