Ответы пользователя по тегу Apache HTTP Server
  • Как залить на веб-сервер сторонние файлы в папку с правами доступа 777?

    я правильно понимаю что вопрос в том как зпретить кому не лень заливать файлы в папку с правами 777 ?
    ответ:
    1. поставить другие права
    2. запретить заливать в эту папку ... тут не очень понятно через че заливают но в общем запретить этому демону работать с папкой.
    3. скорее всего вы имеете в виду что вам постоянно заливают туда вирусы ? то это совсем другой вопрос ;)
    4. Запретить exec
    да на самом деле варанов миллион вы уточните вопрос.
    Ответ написан
  • Как решить задачу с перенаправлениями в Mod_Rewrite?

    shambler81
    @shambler81 Куратор тега htaccess
    ну для этого вам нужно сделать следующее...
    Ничего!
    .htaccess так и работает.
    Все что вам нужно сделать это создать файл .htaccess внутри нужной вам папки.
    Так же не кисло было бы привести весь .htaccess поскольку ни фига ненаглядно.
    Что касается количества строк, уменя в среднем на магаз около 6К строк и я замерял нифига не тормозит.
    Что касается оптимизации то давай весь файл будем думать.
    Ответ написан
  • Редирект страниц постраничной навигации раздела с GET-переменной?

    shambler81
    @shambler81 Куратор тега htaccess
    Знак вопроса нужен, он удаляет парашу в конце.

    1 robots.txt - запрети все квери с паге=
    2. риал каноникал на главную страницу
    3. редирект собственно ;) если от старого сайта
    4. закрывай пагенацию аяксом.
    Ответ написан
    Комментировать
  • Как настроить редирект с http на https только для одной страницы?

    shambler81
    @shambler81 Куратор тега htaccess
    ваш вопрос нужно разделить на 3
    1. как сделать редирект с гет запросом
    2. как сделать редирект с http -> https
    3. как сделать редирект одной страницы.
    #если урл index.php
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
    # если  есть гет запрос , конструкция по краям это если  он  не один.
    RewriteCond %{QUERY_STRING} (^|&)route=checkout/quickcheckout($|&)
    #если http
    RewriteCond %{HTTP} on
    #Перенаправить на 
    RewriteRule ^(.*)$ /%{QUERY_STRING}  [R=301,L]

    если же тебе требуется изменить гет запрос то тут все просто обрати внимание на экран перед ?
    RewriteRule ^(.*)$ /index.php\?route=checkout/quickcheckout  [R=301,L]
    Ответ написан
    Комментировать
  • Как добавить определенный open_basedir во все виртуальные хосты?

    Данная директива изрядно тормозит сайт, а защиты по факту дает не так уж и много.
    Ответ написан
    Комментировать
  • Перенос настроек apache2 между серверами?

    csync2
    Ответ написан
    Комментировать
  • Как сделать такой ЧПУ?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^industries/([^/]*)([/?]*)(/?)+$ http://site.ru/industries/index.php\?razd=$1&page=$2 [L]

    Можно через бейс дир сделать
    Вообще есть куда более валидные способы.
    От себя добавлю что
    1. в урл не входит гет запрос, это не часть урла, по этому тебе их выхватывать нужно через квери стринг в реврайт конд.
    Второе если ты нааправляешь на урл то экранируй ? иначе не сработает, ну или передавай сразу квери стринг.
    Ответ написан
    Комментировать
  • Как убрать от public/index.php в URL в Lumen?

    shambler81
    @shambler81 Куратор тега htaccess
    DirectoryIndex не пойдет?
    я уже молчу про нормально настроенный virtualhost
    Ответ написан
  • Почему резко увеличилось количество RequestWorkers mpm_prefork?

    shambler81
    @shambler81 Куратор тега Linux

    StartServers 1
    MinSpareServers 1
    MaxSpareServers 10
    MaxRequestWorkers 250
    MaxConnectionsPerChild 0

    маловато однако всеже
    вопервых если у тебя позволяет память сделай хотябы

    StartServers 10
    MinSpareServers 10
    MaxSpareServers 10
    MaxRequestWorkers 250
    MaxConnectionsPerChild 0

    Как правило пмяти на это ховатит с большим запасом.
    Вот только 1 это теоретически даже с nginx очень легко тебя задедосить.
    Ответ написан
    Комментировать
  • Как выставить ограничения для Apache?

    shambler81
    @shambler81 Куратор тега Linux
    у вас проблемма в виртуал хосте.
    Для ее решения вам нужно действительно зайти в админку, создать новый сайт указав его явно а не в дефолтную папку и тогда вам будет счастье.
    Если же нет то вам нужно сделать хотябы вот так.
    RewriteCond %{HTTP_HOST} ^!(www|)\.site\.ru [NC]
    RewriteRule ^(.*)$ http://%{HTTP_HOST}/404.php [R=301,L]

    Криванько конечно но уж получше чем ничего.
    Вобще у вас проблема в том что вы положили сайтв дефолтную ловушку, по факту любые запросы идут в нее это типа /dev/null только для запросов сайта.
    Вам нужно создать отдельный виртуалхост с явно указаным сайтом, для этого лезьте в админку создавайте сайт.
    Скорее всего вы положили в базовую папку.
    По мне так ее вообще нужно запрещять юзать.
    Ответ написан
  • Как указать вирутальный хост Apache2 по умолчанию?

    <VirtualHost _default_:80>
            ServerAdmin webmaster@localhost
    
            DocumentRoot /var/www/default/web/
            <Directory />
                    Options FollowSymLinks
                    AllowOverride None
            </Directory>
            <Directory /var/www/default/web>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride None
                    Order allow,deny
                    allow from all
            </Directory>
    
            ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
            <Directory "/usr/lib/cgi-bin">
                    AllowOverride None
                    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                    Order allow,deny
                    Allow from all
            </Directory>
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
    
            # Possible values include: debug, info, notice, warn, error, crit,
            # alert, emerg.
            LogLevel warn
    
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    Ответ написан
    Комментировать
  • MOD_REWRITE или почему редиректы не хотят работать?

    RewriteEngine On
    RewriteCond %{SERVER_PORT} ^80$ [OR]
    RewriteCond %{HTTP} =on
    RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L]
    Ответ написан
    Комментировать
  • Как правильно сделать перенаправление в htaccess (HTTPS включено)?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteEngine On
    RewriteBase /
    RewriteRule ^rules-23$ https://site.ru/rules$  [NC,L]


    Или
    RewriteRule ^rules\-23$ https://site.ru/rules$  [NC,L]
    Ответ написан
  • Как сделать редирект всех урл с? на главную страницу сайта (подробнее в описании)?

    shambler81
    @shambler81 Куратор тега htaccess
    если файл существует, то это ответ 200ок ?
    тогда вам смело в nginx
    Проверку в .htaccess я бы ооочень не рекомендовал, не говря уже что без костылей это не сделать.
    Ответ написан
  • Как заставить Apache или Yii отдавать 404 без 301?

    shambler81
    @shambler81 Куратор тега htaccess
    Вопрос старый и реторический, это не имеет отношение к движку.
    ЭТо имеет отношение к парсеру кода ответа сервера, берет он последовательность кодов или последний.
    По факту конечная 404 действительно отдаст несуществующую страницу и поисковик поймет что ее нет и пометит ее несуществующей, но сам урл редиректа может не моменить поскольку он отдает валидный ответ сервера.
    Проверять в .htaccess код ответа можно но тем самым при каждом хите вам н ужно дождаться ответа сервера и только после этого вообще что-то произойдет. А посточнное динамичное перечтение этого файла может потенциально добавить гемороя.
    ТАк что проверить код ответа через .htaccess я бы не рекомендовал.
    и ТАК ЧТО МОЖНО СДЕЛАТЬ.
    Первое это настроить трай файл и тд в nginx там для этого более богатый инструментарий да и коды ответа сервера он читает на лету, уж всяко получше чем в .htaccess
    второе если с той стороны 404 то нахрена вам туда вести ?
    если они там появляются динамически решите проблему у своего движка.
    Ответ написан
    Комментировать
  • Объясните нормальным языком что такое RewriteBase?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteBase /
    # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1 с директивой = /$1
    Ответ написан
    Комментировать
  • Что значит регулярное выражение в .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    %1 - переменная с конда
    $1 из самого реврайт рула
    Ответ написан
    Комментировать
  • Как объединить регулярные выражения в одно?

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

    ############################################################################
    #### Cтандартный .htaccess для проектов студии Клондайк, версия 2.3     ####
    ############################################################################
    RewriteEngine On
       #  Директива включает редиректы.
    RewriteBase / 
       # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
    Options +FollowSymLinks
       # Разрешает переход по символическим ссылкам.
    
    ############################################################################
    #### Перенаправляем протокол https на http                              ####
    ############################################################################
    RewriteCond %{HTTPS} on
       # Проверяем наличие https в URL.
    RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Выбор основного зеркала (или с www или без www)                    ####
    ############################################################################
       # 1. Редирект с www на без www. (раскоментировать директивы пункта 1)
    #RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
       # Проверяем, содержит ли домен www (в начале URL).
    #RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
       # Перенаправляем URL на домен без www.
    ####
       # 2. Редирект без www на www. (раскоментировать директивы пункта 2)
    #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
       # Проверяем, не содержит ли домен www (в начале URL).
    #RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
       # Перенаправляем URL на домен c www.
    
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteRule . %1/%2 [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.
    
    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess   ####
    ############################################################################
    Ответ написан