Ответы пользователя по тегу htaccess
  • Почему ошибка при редиректе?

    shambler81
    @shambler81 Куратор тега htaccess
    тут у меня есть примеры и того и другого.
    https://klondike-studio.ru/standards/standartnyy-h...
    Ответ написан
    Комментировать
  • Как убрать расширение .php?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_METHOD} =GET 
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteCond %{REQUEST_URI} ^(.+)\.php$ 
    RewriteRule ^(.*)$ %1/ [R=301,L]
    Ответ написан
  • Почему не работает редирект с последней точкой домена?

    shambler81
    @shambler81 Куратор тега htaccess
    куда это вы собрались ее убирать ?
    Да и не индексируется он
    Ответ написан
  • Как избавится от лишних символов в url после работы RewriteRule?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{QUERY_STRING} (^|&)art_id\=10($|&)
    RewriteRule ^article$ /article\?id=10 [L,R=301]


    Но наверное ID это некие цифры динамически меняющиеся в зависимости от урла так что сделаем регулярку на все цирфры сразу

    RewriteCond %{QUERY_STRING} (^|&)art_id\=([0-9]{1,})($|&)
    RewriteRule ^article$ /article\?id=%2 [L,R=301]


    Где ([0-9]{1,}) - цифри хотябы одна и более собираем их в группу и подставляем ее в рул через %2 поскольку это вторая група.
    Ответ написан
  • Перехватить запрос к https://site.ru/sitemap.xml и направить на https://site.ru/seo_cap_sys/sitemap-general.php. Реально ли это?

    shambler81
    @shambler81 Куратор тега htaccess
    есть третий вариант, не заниматся хуетой
    а почитать в интернете как рекомендуют сами поисковые системы.

    1. Добавить директиву sitemap с его адресом в файл robots.txt
    2. https://webmaster.yandex.ru/site/indexing/sitemap/
    3. https://www.google.com/webmasters/tools/sitemap-li...
    sitemap-google.png
    Ответ написан
    Комментировать
  • Как запретить просмотр директории?

    shambler81
    @shambler81 Куратор тега htaccess
    Просматривать через что ?
    через браузер вилно файлы ? - то это одна ошибка
    Можно открыть тело файла php - это другая ошибка
    Можно вообще зайти в эту папку - это другая ошибка

    Половина ответов можно найти просто забив их в поиске
    https://habr.com/post/165701/
    Ответ написан
    Комментировать
  • Как реализовать раздельные редиректы в htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteEngine On
    RewriteBase /
    
    # Редирект если не начинается с www
    RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
    RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
    
    # Редирект если не робот и начинается с www
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteCond %{HTTP_USER_AGENT} !(googlebot|yandexbot|msnbot) [NC]
    RewriteRule ^(.*)$ http://www.site2.com/$1 [L,R=302]
    
    # Запуск сайта на текущем домене
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]


    поменяй местами просо и все, в таком случае бот будет частным случаем редиректа на ввв, и во второй проход урлы не будут меняться а следовательно и применяться правила.
    Ответ написан
  • Почему со страниц ЧПУ каталога редиректит на /bitrix/urlrewrite?

    shambler81
    @shambler81 Куратор тега htaccess
    1. домен с русским именем это не проблемам
    https://r01.ru/domain/whois/instruments/converter.php
    2. Пропиши домен пд.рф алиасом к новому домену.
    3. я тут немного подшаманил твой конфиг
    <IfModule mod_rewrite.c>
      Options +FollowSymLinks
      RewriteEngine On
      Options +FollowSymLinks
      php_flag display_errors off
      # запретить отображение ошибок  (требование монитора качества)
      php_flag allow_url_fopen off
      # запретить  использовать удаленые файлы (требование проактивной защиты)
    
    </IfModule>
    ############################################################################
    #### Выбор основного зеркала (с www или без www) с сохранением пртокола ####
    ############################################################################
     
    RewriteCond %{ENV:HTTPS} on
        #Если включен https
    RewriteRule .* - [E=SSL:s]
        #То создаем переменную  "ssl" с текстом s
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
        # Проверяем, содержит ли домен www в начале URL.
    RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L]
        # Перенаправляем удаляем www    если протокол https то подставляется буква s
    
    ############################################################################
    #### редирект с  алиаса к сайту                                         ####
    ############################################################################
    RewriteCond %{HTTP_HOST} !^www(.|)pd\.info$ [NC]
    RewriteRule ^(.*)$ https://pd.info/$1 [R=301,L]
    
    
    ############################################################################
    #### Перенаправляем протокол http на https                              ####
    ############################################################################
    RewriteCond %{HTTP:X-HTTPS} !1
       # Проверяем наличие https в URL.
    # RewriteCond %{ENV:HTTPS} !on  
       # закоментировал свое условие, вставил твое, от сервера зависит какое лучше использовать. 
    RewriteCond %{REQUEST_FILENAME} !^/\.well-known(.*)$
      #   если нет well-known, не знаю зачем тебе это но вставил
    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
    ############################################################################
    RewriteCond %{REQUEST_URI} \..+$
       # Если файл содержит точку.
    RewriteCond %{REQUEST_FILENAME} !-d
       # И это не директория.
    RewriteCond %{REQUEST_FILENAME} -f
       # Является файлом.
    RewriteCond %{REQUEST_URI} ^(.+)/$
       # И в конце URL есть слеш.
    RewriteRule ^(.+)/$ /$1 [R=301,L]
       # Исключить слеш.
    
    ############################################################################
    #### Добавляем слеш(/), если его нет, и это не файл.                    ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(.*)/$
       # Если слеша в конце нет.
    RewriteCond %{REQUEST_FILENAME} !-f
       # Не является файлом.
    RewriteCond %{REQUEST_URI} !\..+$
       # В URL нет точки (файл).
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    
    ############################################################################
    #### Убираем index.php, если он есть в конце URL                        ####
    ############################################################################
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    ############################################################################
    #### Компрессия статического контента для гугл  спид тест               ####
    ############################################################################
    <IfModule mod_deflate.c>
      AddType image/svg+xml .svg
      AddOutputFilterByType DEFLATE image/svg+xml  
      AddOutputFilterByType DEFLATE application/rss+xml
      AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
      AddOutputFilterByType DEFLATE application/x-font
      AddOutputFilterByType DEFLATE application/x-font-opentype
      AddOutputFilterByType DEFLATE application/x-font-otf
      AddOutputFilterByType DEFLATE application/x-font-truetype
      AddOutputFilterByType DEFLATE application/x-font-ttf
      AddOutputFilterByType DEFLATE application/x-javascript
      AddOutputFilterByType DEFLATE application/xhtml+xml
      AddOutputFilterByType DEFLATE application/xml
      AddOutputFilterByType DEFLATE font/opentype
      AddOutputFilterByType DEFLATE font/otf
      AddOutputFilterByType DEFLATE font/ttf
      AddOutputFilterByType DEFLATE image/svg+xml
      AddOutputFilterByType DEFLATE image/x-icon
      AddOutputFilterByType DEFLATE text/css
      AddOutputFilterByType DEFLATE text/html
      AddOutputFilterByType DEFLATE text/javascript
      AddOutputFilterByType DEFLATE text/plain
      AddOutputFilterByType DEFLATE text/xml
      AddOutputFilterByType DEFLATE image/svg+xml
    </IfModule>
    <IfModule mod_expires.c>
      ExpiresActive on
      ExpiresByType image/jpeg "access plus 3 day"
      ExpiresByType image/svg "access plus 3 day"
      ExpiresByType image/gif "access plus 3 day"
      ExpiresByType image/png "access plus 3 day"
      ExpiresByType text/javascript "access plus 3 day"
      ExpiresByType text/css "access plus 3 day"
      ExpiresByType application/javascript "access plus 3 day"
    </IfModule>
    
    ############################################################################
    #### Антивирус, только для 1С-Битрикс,                                  ####
    ############################################################################
       #php_value auto_prepend_file "/home/bitrix/ext_www/SITE.RU/bitrix/modules/security/tools/start.php"
       #  укажите путь до файла 
       # включить тут /bitrix/admin/security_antivirus.php?lang=ru
    
    <IfModule mod_rewrite.c>
      # Безопасность
      RewriteRule ^composer\.(json|lock)$ / [R=404,L]
      RewriteRule ^vendor(.*)$ / [R=404,L]
      RewriteRule ^(.*)\.(idea|git|gitmodules|gitignore|htaccess|vagrant)$ / [R=404,L]
      RewriteRule ^deploy-config\.json$ / [R=404,L]
      # Bitrix
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-l
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
      RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
      RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
    </IfModule>

    Теперь почему не отрабатыает твой редирект.
    Поскольку он идет до ЧПУ
    ПО сути тебе нужно повторить его и после ЧПУ
    или внести исключение в ЧПУ битрикса
    Ответ написан
  • Как убрать PHP поставить слеш в отдельной папке?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} ^/forum/.+\.php$ 
    RewriteRule ^(.+)\.php /$1 [L]
    Ответ написан
    Комментировать
  • Как убрать наследование htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    Что-то вы парите какую-то дичь, вопервых наследоваться они не могут поскольку у каждого сайта свой документ рут, даже если они в подпапках.
    Во второых вложенный .htaccess перекрывает правила вышестоящего.
    Ну и да ответ будет такой, нужно перепилить vitrualhost сделать все как положено.
    Если нужно чтоб сайты лежали внутри друг друга, сделать симлинки и настроить на них.
    Ответ написан
  • Как изменить урл карты сайта?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{QUERY_STRING} (^|&)route\=extension/feed/google_sitemap($|&)
    RewriteRule ^index\.php$ /map.xml? [L,R=301]
    Ответ написан
    6 комментариев
  • Условия в .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    Брат мой, познай силу UTM - меток
    Ответ написан
    Комментировать
  • Кто разбирается в .htaccess и заголовках ответа?

    shambler81
    @shambler81 Куратор тега htaccess
    1. нет не будет, это небольшой конфиг, Но конечно он избыточен и с запасом.
    1.1 большую часть из написанного можно просто прописать в httpd.conf php.ini или vitrualhost собственно где им и место.
    2. тебе нужно понять что именно ты от него хочешь
    3. нужно тестировать скорость
    https://klondike-studio.ru/standards/standartnyy-h...
    Ответ написан
    Комментировать
  • Как правильно настроить редирект?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} ^(.+)/$
    RewriteRule ^(.+)/$ /$1 [R=301,L]
    Ответ написан
    7 комментариев
  • Как делать rewrite в htaccess из папки на другой порт домена?

    shambler81
    @shambler81 Куратор тега htaccess
    Вам нужно пообщаться со злым админом ;)
    Или как вариант использовать домены 3 уровня, дабы они бесплатные ;)
    и вешать все ваше хозяйство на 80 порт
    Ответ написан
    Комментировать
  • Можно ли обезопасить загрузку файлов на сервер с помощью запрета на исполнение?

    shambler81
    @shambler81 Куратор тега htaccess
    Можно, в нужной папке создайте файлик .htaccess
    <IfModule mod_mime.c>
            RemoveHandler      .php .php3 .php4 .php5 .php6 .phtml .pl .asp .aspx .cgi .dll .exe .shtm .shtml .fcg .fcgi .fpl .asmx .pht
            AddType text/plain .php .php3 .php4 .php5 .php6 .phtml .pl .asp .aspx .cgi .dll .exe .shtm .shtml .fcg .fcgi .fpl .asmx .pht
    </IfModule>
    <IfModule mod_php5.c>
            php_flag engine off
    </IfModule
    >
    Ответ написан
    Комментировать
  • Как настроить корень сайта и для подсайтов в .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    1 что нужно делать это перестать думать как denver или openserver - не забывай что они генерируют конфиги при создание папок.
    2. вам нужно создать конфиг под каждый сайт или сделать их динамическими в случае proxy nginx
    3. интересующий вас параметр documentroot DocumentRoot а не DirectoryIndex
    В свю очередь этот параметр не переназначается через htaccess
    4. создавайте конфиги под каждый сайт или используйте web панель ispconfig3 vestacp и их аналоги.
    5. Если это ОС windows то воспользуйтесь openserver
    6. Отметить решеным ;)
    Ответ написан
  • Как настроить .htaccess в laravel на реальном сервере?

    shambler81
    @shambler81 Куратор тега htaccess
    Переименуй пока .htaccess в htaccess.txt
    проверь, как минимум исключи банальную ошибку в нем.
    Ответ написан
    Комментировать
  • Как отображать один сайт через 4-5 разных доменов?

    shambler81
    @shambler81 Куратор тега htaccess
    ServerAlias для этого и создан
    <VirtualHost *:80>
                    DocumentRoot /var/www/site.ru/web
                    ServerName site1.com
                    ServerAlias www.site1.com www.site2.com site2.com www.site3.com site3.com
    ...

    В принципе и в сервер нейм так же можно записать
    ну или положить в дефолтную папку, в нее вообще любой неразобранный запрос идет
    по умолчанию это /var/www но лучше так не делать.
    Ответ написан
    Комментировать