Как освободить данный шаблон маршрута из правила htaccess - PullRequest
0 голосов
/ 11 июля 2019

Хорошо, у меня есть этот сайт - myweb.com , а затем у меня есть API-интерфейсы для него, тоже размещенные в подкаталоге домена - myweb.com / api .

Когда я пытаюсь принудительно перенаправить все перенаправления на https://www.myweb.com,, мой API прерывается, потому что он уже использует https://myweb.com/api.

Ниже мой htaccess на данный момент:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
    RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
    RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
    RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
    RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
    RewriteRule ^ index.php [L]

    Redirect /page/faqs https://www.myweb.com/faqs
    Redirect /page/about https://www.myweb.com/about

    SetEnv TZ Africa/Lagos
</IfModule>

Options -Indexes

<Files .env>
    order allow,deny
    Deny from all
</Files>

<IfModule php5_module>
    php_flag asp_tags Off
    php_flag display_errors Off
    php_value max_execution_time 960
    php_value max_input_time 1920
    php_value max_input_vars 16000
    php_value memory_limit 16384M
    php_value post_max_size 384M
    php_value session.gc_maxlifetime 2880
    php_value upload_max_filesize 64M
    php_flag zlib.output_compression Off
</IfModule>

<IfModule mime_module>
    AddType application/x-httpd-ea-php56 .php .php5 .phtml
</IfModule>

В общем, я хочу, чтобы нижеследующее перенаправило на https://www.myweb.com.

Тем не менее, приведенное ниже освобождается от вышеуказанного правила:

1 Ответ

0 голосов
/ 11 июля 2019

Обновленный ответ

Теперь, когда вы предоставили .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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...