Обновленный ответ
Теперь, когда вы предоставили .htaccess
и обсудили свою проблему, может быть проще обработать /api
запросы ранее в ваших правилах перенаправления.
Добавьте это послепервая RewriteEngine On
строка:
# If handling an /api request ignore other rewrite rules.
RewriteRule ^/api index.php [L]
Это просто передаст запросы /api
вашему «переднему контроллеру» и не обработает другие правила перезаписи, которые следуют после ([L]
).
Предыдущий ответ
Возможно, вам нужно что-то похожее на следующее:
# Set %{ENV:PROTO} variable, to allow rewrites to redirect with the
# appropriate schema automatically (http or https).
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteRule ^ - [env=proto:https]
RewriteCond %{HTTPS} !=on
RewriteRule ^ - [env=proto:http]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
# No action if host already starts with "www."
RewriteCond %{HTTP_HOST} !^www\. [NC]
# No action if the path part that starts with "/api"
RewriteCond %{REQUEST_URI} !^/api
# Redirect to include "www."
RewriteRule ^ %{ENV:PROTO}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
Подобные примеры .htaccess
можно найти в шаблонах конфигурации HTTP-сервера Apache *Проект 1023 * на GitHub.
Перенаправление HTTPS будет отдельным от этого, вы можете посмотреть здесь конкретный пример: https://github.com/h5bp/server-configs-apache/blob/master/src/rewrites/rewrite_http_to_https.conf