За последние 24 часа нас посетили 22290 программистов и 1123 робота. Сейчас ищут 653 программиста ...

Работа url'ов со слэшем и без одновременно

Тема в разделе "PHP для новичков", создана пользователем justc, 7 дек 2017.

  1. justc

    justc Активный пользователь

    С нами с:
    27 сен 2015
    Сообщения:
    130
    Симпатии:
    0
    Делаю, чтобы без слэша на конце работали (site.ru/car/vaz):

    Код (Text):
    1.  
    2. RewriteCond %{REQUEST_FILENAME} !-f
    3. RewriteCond %{REQUEST_FILENAME} !-d
    4. RewriteRule .* index.php [L]
    но если в alias прописать слеш, то будет редирект на главную
    site.ru/car/vaz/ или site.ru/car/va/z

    я вот и хочу понять, это из-за htaccess или это index.php так отрабатывает (ну или что-то внутри системы)
    --- Добавлено ---
    задача чтобы обе ссылки
    site.ru/car/vaz
    site.ru/car/vaz/
    выводили одну и ту же статью, то есть работали

    ps это для сохранения старых ссылок
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
  3. justc

    justc Активный пользователь

    С нами с:
    27 сен 2015
    Сообщения:
    130
    Симпатии:
    0
    404, я думаю всё-таки движок плюсом что-то делает, чтобы не было дублей...

    может тогда сделать проще, по умолчанию БЕЗ слэша на конце, а если запрос идет СО слэшем, то делать 301 редирект на БЕЗ слеша

    тогда, вроде как, и ссылки сохранятся как физически, так и в поисковиках (правда будет переиндексация)


    вот пытаюсь так

    Код (Text):
    1.  
    2. RewriteBase /edsa-test
    3. RewriteCond %{REQUEST_FILENAME} !-f
    4. RewriteCond %{REQUEST_FILENAME} !-d
    5. RewriteCond %{REQUEST_URI} ^(.+)/$
    6. RewriteRule ^(.+)/$ /$1 [R=301,L]
    7. RewriteRule .* index.php [L]
    но редиректит не учитывая RewriteBase
     
  4. justc

    justc Активный пользователь

    С нами с:
    27 сен 2015
    Сообщения:
    130
    Симпатии:
    0
    вроде получилось, посмотрите пожалуйста, всё ли так и нормально или можно как-то улучшить, или сократить?

    Код (Text):
    1.  
    2. <IfModule mod_rewrite.c>
    3. RewriteEngine On
    4. RewriteBase /edsa-test
    5.  
    6. RewriteCond %{HTTP_HOST} (.*)
    7. RewriteCond %{REQUEST_URI} /$ [NC]
    8. RewriteRule ^(.*)(/)$ $1 [L,R=301]
    9.  
    10. RewriteCond %{REQUEST_FILENAME} !-f
    11. RewriteCond %{REQUEST_FILENAME} !-d
    12. RewriteRule .* index.php [L]
    13. </IfModule>
    когда вбиваю url со слэшем на конце идет редирект на БЕЗ слэша
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    Код (Text):
    1. AddDefaultCharset UTF-8
    2.  
    3. DirectoryIndex index.php
    4.  
    5. RewriteEngine On
    6.  
    7. # Redirect Trailing Slashes If Not A Folder...
    8. RewriteCond %{REQUEST_FILENAME} !-d
    9. RewriteRule ^(.*)/$ /$1 [L,R=301]
    10.  
    11. # Handle Front Controller...
    12. RewriteCond %{REQUEST_FILENAME} !-d
    13. RewriteCond %{REQUEST_FILENAME} !-f
    14. RewriteRule ^ index.php [L]
     
    justc нравится это.
  6. justc

    justc Активный пользователь

    С нами с:
    27 сен 2015
    Сообщения:
    130
    Симпатии:
    0
    @MouseZver, спасибо, это великолепно, всего две строчки.