Задать вопрос
Ответы пользователя по тегу htaccess
  • Htaccess срыть папку из url?

    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>
    Ответ написан
    Комментировать
  • .htaccess - подпапка в качестве корня?

    shambler81
    @shambler81 Куратор тега htaccess
    1. линка на сайт - но в таком случае на основном сайте будет такая же структура.
    2. Прокинуть прокси если у вас nginx+apache в таком случае просто указать документ рут в эту папку, так же можно использовать прокси в апаче https://httpd.apache.org/docs/2.4/mod/mod_proxy.html
    3. Можно сделать это черзе ЧПУ, вы не указали какой движок.
    4. и самое простое, если у вас есть доступы до vhost апача, то просто в конфиге измените документ рут до соответствующей папки.
    Ответ написан
    Комментировать
  • Как сделать перенаправление с HTTP на HTPPS с исключениями в htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{SERVER_PORT} !^443$
    RewriteCond  %{REQUEST_URI}  !^/wc1c/exchange/& [NC]
    RewriteCond %{QUERY_STRING} !(^|&)wc1c\=exchange($|&) 
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}? [L,R=301]
    Ответ написан
  • Как правильно склейка www и основной домен в .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    очевидно поменять в правиле 1 букву.
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
    Ответ написан
    Комментировать
  • Как настроить 301 редирект без ущерба файлам?

    shambler81
    @shambler81 Куратор тега htaccess
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{THE_REQUEST} //
       # Проверяем, повторяется ли слеш (//) более двух раз.
    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 нет точки (файл).
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    Ответ написан
  • Как настроить htaccess с указанием переадресации с www на без с учётом ЧПУ?

    shambler81
    @shambler81 Куратор тега htaccess
    1. А че у вас редирект с ввв стоит после чпу ? вообще-то хтаксесс читается сверху вниз. И если вы хотите более раннего применения, милости просим, переместите вверх.
    2. у вас дуратское ЧПУ
    оно у вас не учитывает собственно файлов и директориев.

    RewriteCond %{REQUEST_FILENAME} !-f
    #это не файл
    RewriteCond %{REQUEST_FILENAME} !-l
    # и это не линка
    RewriteCond %{REQUEST_FILENAME} !-d
    # и это не директория
    # и  защита от циткла, это не сам файл 
    RewriteCond %{REQUEST_FILENAME} !/index.php$
    RewriteRule ^([a-z0-9\-/]+)$ index.php\?url=$1 [L]


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

    shambler81
    @shambler81 Куратор тега htaccess
    э ээ а межт файлик покажите ?
    Ответ написан
  • Как установить пробел в url htaccess в RewriteCond?

    shambler81
    @shambler81 Куратор тега htaccess
    Кто спецсимволы будет экранировать ?
    Вообще-то для реврайт конд этот символ % используется.
    И очень удобная штука например
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

    А вы его не экранируете.
    \%
    Ответ написан
  • Как правильно сделать редирект в .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    https://www.donatstudios.com/RewriteRule_Generator
    она умеет делать и редиректы с гетом и без гетов,
    единственное она не умеет делать редирект на урл с гетом, посколку перев ? не ставит \? , но это можнро и руками сделать.
    Теперь по слешу.
    Он должен быть по умолчанию.
    но тут нужно чуть больше исключений чем кажется.

    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL ####
    ############################################################################
    RewriteCond %{THE_REQUEST} //
    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 нет точки (файл).
    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>
      # Compress HTML, CSS, JavaScript, Text, XML and fonts
      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>
    Ответ написан
    Комментировать
  • Не работает относительная ссылка на index.html в дочерней директории?

    shambler81
    @shambler81 Куратор тега htaccess
    вижу кучу ошибок, вначале их исправь.
    1. хост в ввв пишется с экраном точек,
    www\.comics-man\.ru
    во вторых я бы вообще от домена избавился, да и с https нужно правильно работать.
    RewriteCond %{SERVER_PORT} !^443$
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
    
    RewriteCond %{SERVER_PORT} ^443$
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]


    Далее проще через REQUEST_URI
    RewriteCond %{REQUEST_URI} ^(.*)/index\.html$
    RewriteRule ^(.*)$ %1/ [R=301,L]

    А то что вы делаете это просто удаляете все.

    теперь с удалением слеша в конце, вообще семантически его какрк-таки нуно ставить.
    но это уже на ваше совести.
    по идее все наоборот.
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{THE_REQUEST} //
    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 нет точки (файл).
    RewriteRule ^(.*)$ $1/ [L,R=301]


    Ну да и не забудь рекомендации гугл
    <IfModule mod_deflate.c>
      # Compress HTML, CSS, JavaScript, Text, XML and fonts
      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 комментарий
  • Как правильно прописать код в .htaccess для выполнения действия зсилання во внутреннюю папку?

    shambler81
    @shambler81 Куратор тега htaccess
    Если вам нужно так сделать со ВСЕМИ запросами
    то конечно проще поменять в конфиге апача DocumentRoot
    Ответ написан
    Комментировать
  • Как сделать перенаправление с поддоменов на основной домен?

    shambler81
    @shambler81 Куратор тега htaccess
    а нехрен его располагать в папке /var/www
    и тому подобное.
    Поскольку у вас есть конфиг default.conf в котоом собираются все "мусорные" запросы
    типа дев нула дял сайтов.
    Как правило особо отличившиеся ставят сайтв эту папку В следсвтвие чего этот сайт доступен по любому домену который сошлется на этот сайт, любому айпи и тд. . А по сути в ней должно лежать "здрасти вы ошиблись сайтом но сервер тот "
    А вот для реальных сайтов создаются свои конфиги с прописаными путями до файлов.
    Тогда апачь попадает по http заголовку в нужный сайт.
    В вашем же случае сайт test.ru скорее всего лежит именно в таком месте, как вариант создать под него отдельнй виртуалхост и не праиться.
    Ответ написан
    Комментировать
  • Как сократить ссылкy?

    shambler81
    @shambler81 Куратор тега htaccess
    Это урл с гет запросом, гет не является частью request_uri по этому им управляют отдельно.
    RewriteCond %{QUERY_STRING} (^|&)page\=catalog($|&)
    RewriteCond %{QUERY_STRING} (^|&)cat\=2499($|&)
    RewriteRule ^index\.php$ /catalog/2499? [L,R=301]

    Вопрос в конце удалит гет параметр
    Ответ написан
  • Вирус на сайте, который плодит файлы редиректов htaccess - как избавиться?

    shambler81
    @shambler81 Куратор тега htaccess
    Качаешь запускаешь с консоли, можно через пхп собственно но я бы с консоли лучше запускал.
    Дальше ждешь когда просканит
    открываешь статистику.
    Удаляешь вирусы согласно написаному.
    ТАм будут и файлы и место.
    если сам не сможешь написать скрипт по удалению кидай лог сюда, только регуляркой замени домен на site.ru - дабы люди ушлые не воспользовались.
    revisium.com/ai/index.php?q=8271542351504877357110...
    че за зверь такой читаешь тут
    https://revisium.com/ai/
    Ответ написан
    Комментировать
  • Как настроить редирект на cms arwshop.ru?

    shambler81
    @shambler81 Куратор тега htaccess
    а с какого перепугу они должны работать ?
    У тебя в руле гет параметр, который не является частью урла в принципе.
    Что ты от него хочешь ?

    Вот тебе счастье
    https://www.donatstudios.com/RewriteRule_Generator
    Дальше только подставишь свои маски.
    кстати{1,255}можно смело заменить на {1,}- что означает от одного и выше
    А вот [0-9a-zA-Z\x80-\xFF\x20\/\_\] я так понимаю можно сократить и до +
    Ответ написан
  • Как убрать get параметры из редиректа?

    shambler81
    @shambler81 Куратор тега htaccess
    www.site.ru/pravoslavnie-molitvoslovi/\?
    Вот так
    Ответ написан
  • Как настроить редирект с помощью .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    да такое вполне возможно, и все что содержит два слеша вполне себе можно удалить, но что при этом будет с сайтом ? допустим я перекину тебе все запросы на site.com/articles а что дальше ?
    одна и та же страница будет одаваться ?
    Или у тебя там стоит некое ЧПУ которое будет обрабатывать гет запросы скажем ?id=/qwerty/12345
    Но про это небыло ничего в тз.
    Ты хочешь сделать 1 урл нескольким страницам ?
    в чем смысл?
    или это 1 урл и 1 страница ?
    Ответ написан
  • Как прописать RewriteRule gallery?s=blabla -> gallery/blabla?

    shambler81
    @shambler81 Куратор тега htaccess
    не совсем понятно что имено нужно сделать, вот варианты.
    # 301 --- http://site.ru/gallery?s=blabla => http://site.ru/gallery/blabla
    RewriteCond %{QUERY_STRING} (^|&)s\=blabla($|&)
    RewriteRule ^gallery$ /gallery/blabla? [L,R=301]

    Если вам нужно наоборот то скорее всего вы решили сделать свой блэкджек ну там знаете..
    Вам тогда нужно узнать что такое ЧПУ
    site.softmaker.kz/php/nastrojka-chpu-ssylok-url-ph...

    Вот пример ЧПУ, в вашем случае будет видимо по другому.
    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}]


    Опишите более подробно задачу.
    Меняются ли урлы или он 1 ?
    нужен ли код 301 или пойдет 200
    Должна ли меняться ссылка в браузере ?
    Ответ написан
  • Как в htaccess сократить ссылку?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{QUERY_STRING} (^|&)cat\=([0-9]{1,})($|&)
    #СООТВЕТСТВЕННО ЦИФРЫ МОЖНО ЗАМЕНИТЬ РЕГУЛЯРКОЙ НАПРИМЕР [0-9]{1,} В ТАКОМ СЛУЧАЕ ЭТО БУДЕТ ЦИФРЫ ОТ 1 ШТУКИ И БОЛЬШЕ
    RewriteRule ^(.*) /%2? [L,R=301]


    А еше лучше напишитте пример ссылки какая была какая надо, можно нескольк штук, я сделаю более четкую регулярку.
    Ответ написан
  • Почему не работает редирект?

    shambler81
    @shambler81 Куратор тега htaccess
    Попробуй менее точное регулярное выражение, найди что не так и проверь
    RewriteRule job/$ http://site.org/jobs/ [R=301,L]
    RewriteRule ^job$ http://site.org/jobs/ [R=301,L]
    RewriteRule +.job/$ http://site.org/jobs/ [R=301,L]

    Не забыай каржый раз открывать брузер инкогнито
    Так же не забывай поставить это перед ЧПУ сайта
    А желательно в самый верх.
    И да не работает это ?
    1. нет редиректа
    2. не туда
    3. ошибка сервера
    Ответ написан