Apache правило для минимизации перенаправлений - PullRequest
0 голосов
/ 09 октября 2018

У меня есть следующее в файле хоста apache для перенаправления с www на не-www версию сайта:

RewriteEngine on
RewriteCond %{SERVER_NAME} =domain.com [OR]
RewriteCond %{SERVER_NAME} =www.domain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

Я также хочу перенаправить любого, кто идет по этому URL:

www.domain.com/page/amp => domain.com/page/

Проблема в том, что, если я добавлю следующее правило в мой .htaccess, это приведет к дополнительному перенаправлению:

RewriteCond %{REQUEST_URI} (.+)/amp(.*)$ [NC]
RewriteRule ^ %1/ [R=301,L]

В результате, когда кто-то переходит на www.domain.com/page/amp, он делает два перенаправления:

Первый: www.domain.com/page/amp => 301 до => domain.com/page/amp

Второй: domain.com/page/amp => 301 до => domain.com/page

Как изменитьправила в файле vhosts для минимизации этого дополнительного перенаправления?

Пример URL того, что в идеале должно происходить:

www.domain.com => domain.com
www.domain.com/page => domain.com/page
www.domain.com/page/amp => domain.com/page

Последний из приведенных выше - это то, для чего я хочу минимизировать перенаправление.

Обновление:

Вот оба vhosts (для портов 80 и 443):

<VirtualHost *:80>
  DocumentRoot /var/www/html
  RewriteEngine on
  RewriteCond %{SERVER_NAME} =domain.com [OR]
  RewriteCond %{SERVER_NAME} =www.domain.com
  RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<VirtualHost *:443>
  DocumentRoot /var/www/html
  ServerName domain.com
  Include /etc/letsencrypt/options-ssl-apache.conf
  ServerAlias www.domain.com
  SSLCertificateFile /etc/letsencrypt/live/domain.com/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem
</VirtualHost>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...