htaccess - принудительно устанавливает https и www, если не на locahost - PullRequest
0 голосов
/ 25 марта 2019

В моем файле htaccess есть следующее:

  1. Принудительно использует HTTPS и www
  2. Перезаписать, чтобы скрыть определенные каталоги в пути URL
  3. Удалить расширение PHP из файлов
  4. Индивидуальные перенаправления
  5. 404 Страница

код:

# ----------------------------------------------------------------------
# | Rewrites                                                       |
# ----------------------------------------------------------------------

RewriteEngine On

# Force HTTPS and www

RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L,NE]

# Rewrite to hide specific directories in url path

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/_core/$1.php -f
RewriteRule ^(.+?)/?$ _core/$1.php [L]

RewriteCond %{DOCUMENT_ROOT}/_landing/$1.php -f
RewriteRule ^(.+?)/?$ _landing/$1.php [L]

RewriteCond %{DOCUMENT_ROOT}/_products/$1.php -f
RewriteRule ^(.+?)/?$ _products/$1.php [L]

RewriteCond %{DOCUMENT_ROOT}/_static/$1.php -f
RewriteRule ^(.+?)/?$ _static/$1.php [L]

# Remove PHP extension from files

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
RewriteCond %{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^ %{REQUEST_URI}.php [L]

# Individual Redirects

Redirect 301 /page-x/ https://www.mysite.co.uk/page-x/

# 404 Page

ErrorDocument 404 /error-page

Каждый работает нормально.Однако теперь мне не нужно применять # 1 (принудительное использование HTTPS и www) при работе на локальном хосте.

Я пробовал несколько способов, включая добавление

RewriteCond %{HTTP_HOST} !=localhost 

, поэтому блок становится:

# Force HTTPS and www

RewriteCond %{HTTP_HOST} !=localhost
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP_HOST} !=localhost
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L,NE]

в условия, но это затем выбивает остальные правила, т.е. переписать, чтобы скрыть определенные каталоги в пути URL и так далее.Как я могу изменить правила HTTPS и www, чтобы они не применялись на локальном хосте, но сохраняли остальные правила, которые следуют?

...