Ответы пользователя по тегу htaccess
  • Как запретить исполнение файлов в .htaccess в папке на сервере?

    shambler81
    @shambler81 Куратор тега htaccess
    <IfModule mod_mime.c>
            <Files ~ \.(php|php3|php4|php5|php6|phtml|pl|asp|aspx|cgi|dll|exe|shtm|shtml|fcg|fcgi|fpl|asmx|pht|py|psp|rb|var)>
                    SetHandler text/plain
                    ForceType text/plain
            </Files>
    </IfModule>
    <IfModule mod_php5.c>
            php_flag engine off
    </IfModule>
    Ответ написан
  • Как запретить обращение(скачивание архива) по url?

    shambler81
    @shambler81 Куратор тега htaccess
    полодите архив под .htpass и скачивате его с урлом указав пароль, в таком случае физически файл не возможно будет скачать только со ссылкой логина и пароля.
    это самое простое решение.
    Второе решение это скачивание файла через php генерацию урла.
    Ответ написан
  • Как правильно прописать 301 динамический редирект на Apache?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{QUERY_STRING} (?:^|&)page\=(.+)(?:$|&)
    RewriteRule ^cat/$ /cat/page/%1/? [L,R=301]


    где (?:^|&) - это или? или & а ?:исключает эту группу то есть она не становится $1
    (.+) - первая група 1 символ и более
    %1 - эквивалент $1 но уже из RewriteCond
    /?- удалить гет параметры

    Если page тоже переменная то укажи это в ТЗ
    Кнопочка отметить решенным находится чуть ниже поста
    Ответ написан
  • В чем ошибка в моем htacess?

    shambler81
    @shambler81 Куратор тега htaccess
    GET - то что после знака ? не является частью урла
    как следствие ты его просто не можешь выделить
    это делается через реврайт конд
    А вот тут это будет сделать удобно
    https://donatstudios.com/RewriteRule_Generator
    , спасибо кэп, вот я поставил галочку "вопрос решен"
    Ответ написан
  • Как в файле htacces в RewriteCond прописать условие редиректа нескольких / (слешей) на 1?

    shambler81
    @shambler81 Куратор тега htaccess
    https://klondike-studio.ru/standards/standartnyy-h...
    Подробно писал тут.
    Если прям по задаче то
    RewriteCond %{THE_REQUEST} //
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteCond %{QUERY_STRING} !http(s|)://
      # Убедимся что это не урл в  GET
    RewriteRule .* /$0 [R=301,L]
       # Исключаем все лишние слеши.
    Ответ написан
  • Как сделать заглушку на сайте с доступом к файлу?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !/maintenance.php $
    RewriteRule $ /maintenance.php [R=302,L]
    Ответ написан
  • Как правильно составить .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_FILENAME} !-f
    #если это не файл
    RewriteCond %{REQUEST_FILENAME} !-l
    #  и если это не линка
    RewriteCond %{REQUEST_FILENAME} !-d
    # и это не директория
    RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
    # и это не нужный нам файл, от цикла
    RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
    # то перенапраить все это лядство на него ;)

    Логика понятна ?
    Ответ написан
  • Как сделать роут с /profile?id=1&url=test на /test?

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

    Так если тупо по тз
    RewriteCond %{QUERY_STRING} (?:^|&)id\=1(?:$|&)
    RewriteCond %{QUERY_STRING} (?:^|&)url\=(.+)(?:$|&)
    RewriteRule ^profile$ /%1? [L,R=301]

    А вот так если вместо test будет любое значение

    Запись немного чрезмерна, зато универсальна.
    Ответ написан
  • Как настроить htacces в laravel чтобы из адреса убрать public?

    shambler81
    @shambler81 Куратор тега htaccess
    если у вас сайт открывается только по ссылке /public
    то все что вам нужно это положить его на уровень выше.
    Если же нет то document root можно менять только в настройке веб сервера.
    все остальные варианты это костыли.
    Ответ написан
  • Как убрать файл из редиректа .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{HTTP:X-HTTPS} !=1
    RewriteCond %{REQUEST_URI} !^/folder/folder/file.php
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    Знаком отрицания
    Ответ написан
  • Что это такое в этом htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    обычный мобильный вирус, редирект сработает только на мобилке
    удаляем файл ищем вирус
    можно для начала пройтись ai-bolit.php
    Ответ написан
  • Как настроить htaccess 301 редирект?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} ^/catalog/osnova/(.+)$ 
       # если строка начинается с /dir1/ 
    RewriteRule ^(.*)$ /catalog/osnova? [R=301,L] 
       #Перенаправить все URL с начинающиеся с dir1 на dir2 с сохранением дальнейшей структуры URL
    Ответ написан
  • Как настроить переадрессацию?

    shambler81
    @shambler81 Куратор тега htaccess
    у вас гет параметр в урле, но гет не является частью урла по этому вы его не моежте просто выделить.
    Собственно ваш ответ:
    RewriteCond %{QUERY_STRING} (^|&)download\=497($|&)
    RewriteCond %{QUERY_STRING} (^|&)k\=1584014899($|&)
    RewriteRule ^files\-and\-media/$ /files/1.pdf? [L,R=301]
    А вот где это можно легко сделать:

    https://donatstudios.com/RewriteRule_Generator
    Ответ написан
  • Как заменить редирект с каталога на главную на универсальный?

    shambler81
    @shambler81 Куратор тега htaccess
    ############################################################################
    #### Стандартный .htaccess для проектов студии Клондайк, версия 4.6     ####
    ############################################################################
    RewriteEngine On
       #  Директива включает редиректы.
    RewriteBase / 
       # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
    Options +FollowSymLinks
       # Разрешает переход по символическим ссылкам.
    php_flag display_errors off
      # запретить отображение ошибок  (требование монитора качества)
    php_flag allow_url_fopen off
      # запретить  использовать удаленные файлы (требование проактивной защиты)
    
    ErrorDocument 404 /404.php
    
    php_value register_globals Off
    
    php_value mbstring.func_overload 2
    
    RemoveHandler .html .htm
    
    AddType application/x-httpd-php .php .htm .html
    
    DirectoryIndex index.php index.html index.htm
    
    php_value default_charset cp1251
    
    AddType 'text/html; charset=cp1251' .html .htm .shtml
    
    php_value mbstring.internal_encoding cp1251
    
    # ТЫ УВЕРЕН ЧТО cp1251 !!!!!???
    
    ############################################################################
    #### Выбор основного зеркала (с www или без www)                        ####
    ############################################################################
        # 1. Удалить 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
    
        # 2. Добавить www
    #RewriteCond %{ENV:HTTPS} on
        #Если включен https
    #RewriteRule .* - [E=SSL:s]
        #То создаем переменную  ssl с текстом s
    #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
        # Если нет www в начале домена
    #RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L]
        #Подставляем www и https если он включен.
    
    ############################################################################
    #### Перенаправляем протокол https на http                              ####
    ############################################################################
    #RewriteCond %{HTTPS} on
       # Проверяем наличие https в URL.
    #RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Перенаправляем протокол http на https                              ####
    ############################################################################
    RewriteCond %{HTTPS} off
       # Проверяем наличие https в URL.
    RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC] 
       #  Исключим обмен с 1С, ему требуется только 200 
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Убираем index.php, если он есть в конце URL                        ####
    ############################################################################
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{THE_REQUEST} //
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteCond %{QUERY_STRING} !http(s|)://
      # Убедимся что это не урл в  GET
    RewriteRule .* /$0 [R=301,L]
       # Исключаем все лишние слеши.
    
    ############################################################################
    #### Убираем слеши в конце 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 нет точки (файл).
    RewriteCond %{REQUEST_URI} ^(.+)$
     # В URL есть хоть один символы
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    
    
    ############################################################################
    #### Компрессия статического контента для гугл  спид тест               ####
    ############################################################################
    <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 1 year"
      ExpiresByType image/svg "access plus 1 year"
      ExpiresByType image/gif "access plus 1 year"
      ExpiresByType image/png "access plus 1 year"
      ExpiresByType text/javascript "access plus 1 year"
      ExpiresByType text/css "access plus 1 year"
      ExpiresByType application/javascript "access plus 1 year"
      ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
      ExpiresByType application/x-font-ttf "access plus 1 year"
      ExpiresByType application/x-font-opentype "access plus 1 year"
      ExpiresByType application/x-font-woff "access plus 1 year"
      ExpiresByType image/svg+xml "access plus 1 year"
    </IfModule>
      <IfModule mod_headers.c>
      <filesmatch "\.(ico|flv|jpg|jpeg|webp|png|gif|css|swf|woff|pdf)$">
        Header set Cache-Control "max-age=31536000, public"
      </filesmatch>
      <filesmatch "\.(html|htm)$">
        Header set Cache-Control "max-age=7200, private, must-revalidate"
      </filesmatch>
      <filesmatch "\.(pdf)$">
        Header set Cache-Control "max-age=86400, public"
      </filesmatch>
      <filesmatch "\.(js|otf|ttf|woff|woff2)$">
        Header set Cache-Control "max-age=31536000, private"
      </filesmatch>
      </IfModule>
    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess   ####
    ############################################################################
    
    
    RewriteCond %{QUERY_STRING} wd_export=Y&pdf=Y
    RewriteRule ^(.*)\.php$ /$1.php? [R=301,L]
    
    RewriteCond %{QUERY_STRING} wd_export=Y&pdf=Y&pdf2email=
    RewriteRule ^(.*)\.php$ /$1.php? [R=301,L]
    
    RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
    RewriteRule . %1/%2 [R=301,L]
    
    Redirect 301 /kraska-emal/ www.voronezh.optimaservis.su/kraska-emal-dlja-naru...
    #!!!!!!!!!!!!!!!!!!!!!!!!!!!!  ПРЯМ В УРЛЕ ТРИ ТОЧКИ В КОНЦЕ ? ????????
    
    Redirect 301 /sistema-skat/ www.voronezh.optimaservis.su/sistemy-svetovoi-indekacii
    Redirect 301 /katalog/$ /?
    
    RewriteCond %{REQUEST_URI} !^www.voronezh.optimaservis\.su/bitrix/admin/
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
    RewriteRule ^(.*)index\.php$ http://%{HTTP_HOST}/$1 [R=301,L]
    #
    BrowserMatch "MSIE" force-no-vary
    BrowserMatch "Mozilla/4.[0-9]{2}" force-no-vary
    
    RewriteCond %{HTTP_HOST} kurgan.optimaservis.ru
    RewriteRule (.*) kurgan.optimaservis.su/$1 [R=301,L]
    
    SetEnvIf Referer ^https?://(?:.+\.)?advodka\.com/.*$ ban
    Deny from env=ban
    
    SetEnvIf Referer ^https?://(?:.+\.)?linkis\.com/.*$ ban
    Deny from env=ban
    
    SetEnvIf Referer ^https?://(?:.+\.)?prlog\.ru/.*$ ban
    Deny from env=ban
    
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
    RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]


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

    зачем тебе?
    RemoveHandler .html .htm

    и это
    AddType application/x-httpd-php .php .htm .html
    Вы вначале прикрутили к битриксу html файлы теперь удаляете их названия в чем проифт ?

    DirectoryIndex index.php index.html index.htm
    Встречается 2 раза с разной последовательностью в чем прикол ?

    php_value default_charset cp1251
    AddType 'text/html; charset=cp1251' .html .htm .shtml

    ЭЭЭ у тебя 14 битрикс? давно уже по умолчанию UTF-8 точно у тебя сп?
    php_value mbstring.internal_encoding cp1251
    устарела, какой у тебя битриикс?

    Redirect 301 /kraska-emal/ www.voronezh.optimaservis.su/kraska-emal-dlja-naru...

    Реально урл такой?
    Ответ написан
  • Как сделать массовый редирект страниц вложености?

    shambler81
    @shambler81 Куратор тега htaccess
    Перенаправляет все содержимое каталогов
    http://site.ru/любое/dir1/любое/любое

    RewriteCond %{REQUEST_URI} ^/dir1/(.*)$ 
       # если строка начинается с /dir1/ 
    RewriteRule ^(.*)$ /dir1%1 [R=301,L] 
       #Перенаправить все URL с начинающиеся с dir1 на dir2 с сохранением дальнейшей структуры URL
    Перенаправляет все содержимое каталогов с любым началом и концом
    http://site.ru/любое/dir2/dir1
    /любое/любое
    RewriteCond %{REQUEST_URI} ^(.*)/dir1/(.*)$ 
       # если строка содержит /dir1/ 
    RewriteRule ^(.*)$ %1/dir2/%2 [R=301,L] 
       #Перенаправить все URL с начинающиеся с dir1 на dir2 с сохранением дальнейшей структуры URL
    Ответ написан