ошибка слеша в конце htaccess

Я понимаю, что были заданы несколько похожие вопросы, и да, я прочитал все соответствующие ответы и пробовал все это в течение достаточно долгого времени. Однако я не могу понять, в чем ошибка. Я считаю, что сценарий правильный. Что здесь происходит?

Моя проблема в том, что я не могу сделать косую черту в URL-адресе. Поэтому я получаю 2 версии одной и той же страницы. (Проблема дублирования контента?) Например:

https://www.example.com/faq.php

&

https://www.example.com/faq.php/

Я надеялся всегда автоматически добавлять завершающую косую черту, чтобы не было другой версии того же самого.

Вот мой код .htaccess:

 <IfModule mod_rewrite.c>

    RewriteEngine On

    #Redirect anything to http://www (WORKING FINE)
    RewriteCond %{HTTP_HOST} ^example.com [NC]
    RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

    #Redirect anything to https (WORKING FINE)
    RewriteCond %{HTTPS} !on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    #Redirect to trailing slash (NOT WORKING!)
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_URI} !(.*)/$  
    RewriteRule ^(.*)$ https://example.com/$1/ [L,R=301]

    #Redirect /index.php to / (WORKING FINE)
    RewriteCond %{THE_REQUEST} ^.*/index\.php 
    RewriteRule ^(.*)index.php$ /$1 [R=301,L] 

</IfModule>

Так же еще один вопрос по этому же поводу.

Почему, когда я захожу в свой домен, в URL-адресе не отображается завершающая косая черта «/». Затем я копирую и вставляю его в текстовый редактор, он выглядит как https://www.example.com/ со слэшем в конце.

И все же этого не происходит, когда я копирую/вставляю URL-адрес с любой подстраницы, как указано выше, например, /faq.php (НЕ показывается как: /faq.php/).

Я знаю, что завершающая косая черта в корневом домене необходима, чтобы сделать HTTP-запрос действительным, но почему браузеры не показывают его? Просто эстетическая вещь? Во всяком случае, меня больше волнует вышеизложенный вопрос.

Большое спасибо за помощь!


person spotlightevents.ie    schedule 17.03.2017    source источник


Ответы (1)


Однако я не могу понять, в чем ошибка. Я считаю, что сценарий правильный. Что здесь происходит?

Вы проверяете, не существует ли файл перед перенаправлением. Это не то, что вам нужно, поэтому удалите эту строку:

RewriteCond %{REQUEST_FILENAME} !-f 

Почему, когда я захожу в свой домен, в URL-адресе не отображается завершающая косая черта «/». Затем я копирую и вставляю его в текстовый редактор, он выглядит как https://www.example.com/ со слэшем в конце.

Некоторые браузеры делают это автоматически. Это, вероятно, сделано, потому что это фактически запрошенный URL. Это также делает его более похожим на URL.

person Anonymous    schedule 19.03.2017
comment
Миллион спасибо за ответ. Ценить это! По какой-то странной причине это не работает. Я использую только: RewriteBase / RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ пример .com/$1 [L,R=301] Теперь я получаю следующий результат: www.example.com перенаправлял вас слишком много раз. ERR_TOO_MANY_REDIRECTS И сайт вообще не отображается. - person spotlightevents.ie; 24.03.2017
comment
Вы изменили последнюю строку вашего вопроса. Должно быть RewriteRule ^(.*)$ https://example.com/$1/ [L,R=301]. - person Anonymous; 25.03.2017