Ответы пользователя по тегу htaccess
  • Как показать 404 страницу без редиректа сразу если ее нет?

    shambler81
    @shambler81 Куратор тега htaccess
    нет смысла так делать, htaccess очень специфичекая штука и подзапрос будет очень сильно его тормозить.
    во вторых еще раз, уже не знаю какой раз.
    И яндекс и гугл смотрят только на последний код, всю цепочку они пропускают.
    так что если это будет 301 301 301 404 то это 404
    а как исключить файл из индекса это отдельная история тут более чем хватает инструментария.
    я уже если честно устал
    вот с этой шляпой бороться
    RewriteCond %{THE_REQUEST} /index\.php [OR]
    RewriteCond %{HTTPS}       !on         [OR]
    RewriteCond %{HTTP_HOST}   ^www\.      [NC]
    RewriteRule ^(.*?)(index\.php|$) https://localhost/$1 [R=301,L]

    не выдумывайте велосипед и геморой себе на одно место.
    Ответ написан
  • Какая будет команда в .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^(.+?)\.html(?!/amp/).+$ https://%{HTTP_HOST}/$1.html [L,R=301]

    замени на
    RewriteRule ^(.+?)\.html(?!/amp/).+$ https://%{HTTP_HOST}/$1.html? [L,R=301]

    Удалится GET
    А вообще в RewriteRule не входит GET поскольку он не является частью урла!
    а вот так работают с GET
    # 301 --- http://www.test.com/faq.html?faq=13&layout=bob => http://www.test2.com/faqs.html
    RewriteCond %{HTTP_HOST} ^www\.test\.com$
    RewriteCond %{QUERY_STRING} (^|&)faq\=13($|&)
    RewriteCond %{QUERY_STRING} (^|&)layout\=bob($|&)
    RewriteRule ^faq\.html$ http://www.test2.com/faqs.html? [L,R=301]
    Ответ написан
    Комментировать
  • Слеши на конце в joomla?

    shambler81
    @shambler81 Куратор тега htaccess
    стапе
    конкретно что ты хочешь сделать ?
    избавиться от двойных слешей?
    весь файл в студию
    Ответ написан
    Комментировать
  • Как настроить редирект с http на https?

    shambler81
    @shambler81 Куратор тега htaccess
    IfModule mod_rewrite.c можно не писать поскольку он по умолчанию включен.
    так же не забывай что он должен стоять до чпу сайта, дай весь файл.
    на некоторых серверах по разному отлавливается редирект
    где-то работает
    RewriteCond %{HTTPS} off
    где-то
    RewriteCond %{HTTPS} !on
    в общем просто подбери редирект подходящий твоему серверу.
    их штук 30
    На хабре тоже есть.
    Вот пример
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]


    Как настроить редирект на https в.htaccess?
    Ответ написан
  • Как изменить название url с помощью htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    1. домен регистронезависим не майтесь БубУйнеЙ
    2. Файлы и директории наоборот РегисТРОЗависИмЫе и их тоже нельзя менять вот так ;), это вам не винда.
    3. Если у вас сайт на ЧПУ то они тоже как правило регистрозависимые, если же ЧПУ ваше легко относится к таким фортелям, то в нем и делайте вот это убожетво.
    4. Зачем карл?
    5. редирект с html на без него вы найдете с легкостью, все что вам нужно будет это добавить flag [NC], если вам прям так уж прикипело, в таком случае редиректы будут регистронезависимые.
    Ответ написан
    Комментировать
  • Как сформировать htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    находится в гугле
    https://stackoverflow.com/questions/9856951/exclud...
    другое решение
    https://stackoverflow.com/questions/8697706/exclud...
    как минимум знаю еще одно
    должно сработать через
    <Directory /var/www/site.ru/directory1>
                    ........
       </Directory>
    Ответ написан
    Комментировать
  • Как правильно прописать редиректы в htaccess без их цепочки?

    shambler81
    @shambler81 Куратор тега htaccess
    1. гугл и я ндекс легко понимает последовательность редиректов.
    2. че это за шляпа у вас?#
    # Uppercase to lowercase conversion plug-in (This section, along with the first noted rule above, 
    # may be removed if not needed or wanted) Skip next 28 rules if no uppercase letters in URL
    RewriteCond %{ENV:myURI} ![A-Z]
    RewriteRule .? - [S=28]
    # Else swap them out, one at a time
    RewriteCond %{ENV:myURI} ^([^A]*)A(.*)$
    RewriteRule . - [E=myURI:%1a%2]
    RewriteCond %{ENV:myURI} ^([^B]*)B(.*)$
    RewriteRule . - [E=myURI:%1b%2]
    RewriteCond %{ENV:myURI} ^([^C]*)C(.*)$
    RewriteRule . - [E=myURI:%1c%2]
    RewriteCond %{ENV:myURI} ^([^D]*)D(.*)$
    RewriteRule . - [E=myURI:%1d%2]
    RewriteCond %{ENV:myURI} ^([^E]*)E(.*)$
    RewriteRule . - [E=myURI:%1e%2]
    ....

    Какой-то идиот предложил это делать и все делают, че за стадное желание.
    Вы понимаете что линукс регистрозависимая ОС?
    это не винда, тут так делать НЕЛЬЗЯ !
    Ответ написан
  • Правильный ли у меня .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    ############################################################################
    #### настройки php 										                ####
    ############################################################################
    php_value max_execution_time 500
    php_value max_input_time 500
    php_value upload_max_filesize 30M
    php_value post_max_size 30M
    Options -Indexes
    AddCharset utf-8 .js
    ErrorDocument 403 /error/404
    ErrorDocument 404 /error/404
    
    ############################################################################
    #### Компрессия статического контента для гугл  спид тест               ####
    ############################################################################
    <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>
    ############################################################################
    ####  Редиректы и прочее               ####
    ############################################################################
    
    <IfModule mod_headers.c>
        RequestHeader set X-Prerender-Token "КОД ТОКЕНА"
        RequestHeader set X-Prerender-Version "prerender-apache@2.0.0"
    </IfModule>
    
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
    RewriteRule ^(.*)$ httpы://site.ru/$1 [R=301,L]
    
    <IfModule mod_proxy_http.c>
            RewriteCond %{HTTP_USER_AGENT} googlebot|bingbot|yandex|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest\/0\.|pinterestbot|slackbot|vkShare|W3C_Validator|whatsapp [NC,OR]
            RewriteCond %{QUERY_STRING} _escaped_fragment_
            RewriteCond %{REQUEST_URI} ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent|\.ttf|\.woff|\.svg))
            RewriteRule ^(index\.html|index\.php)?(.*) https://service.prerender.io/https://site.ru/$2 [P,END]
    </IfModule>
    
    ############################################################################
    #### ЧПУ сайта  										                ####
    ############################################################################
    
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !router.php$
    RewriteRule ^(.*)$ router.php/$1

    Однако я вижу у вас мод прокси, он очень редко используется, я бы не рекомендовал его использовать.
    Вместо этого в 404.php впишите php proxy
    это будет куда более ожидаемое действие а так же там можно делать str_replace и тд.
    Ответ написан
    3 комментария
  • Субдомен на .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    перенаправить можно. Но создать этот домен нельзя.
    RewriteCond %{HTTP_HOST} ^domain\.ru$
    RewriteRule ^admin$ http://admin.domain.ru/? [L,R=301]
    Ответ написан
  • Как можно переделать .htaccess под NGINX у самописного движка?

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

    shambler81
    @shambler81 Куратор тега htaccess
    во первых если вы выделяете в RewriteCond группы, то они подставляютяс не как $1 а %1 поскольку группы вы можете собирать еще и RewriteRule, но в вашем случае можно обойтись и без RewriteCond
    RewriteEngine On
    RewriteRule ^catalog/perchatki/(.*)$ /catalog/ekipirovka/perchatki/$1 [NC,R=301,L]

    NC - регистрогезависимость, можно не ставить
    Ответ написан
  • Как поменять абсолютный на альяс путь в Apache, .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    1 я бы вам посоветовал отказаться от сервера "c:/server/projects/localhost/joomla/"
    тем более есть замечательные вещи типа openserver
    2. вариантов много например Basedir в .htaccess
    3. через apache
    4. скорее всего вам это и подойдет, есть пути относительные и абсалютные
    https://www.uamedwed.com/blog/web/absolyutnyj-i-ot...
    так же не забывайте что и протокол теперь может быть разным, по этому //
    ну и на последок
    это из пункта 1 следует
    есть symlink и relative symlink в линуксе
    Ответ написан
  • Как избавиться от технических дублей?

    shambler81
    @shambler81 Куратор тега htaccess
    такие адреса есть у всех CMS порой до 5 на одну страницу ;)
    И так что можно сделать
    1. риал каноникал на всем сайте на текущую страницу без гет параметра. В идиале делайте првоерку во время генерации если страница с нормальным чпу то риал не ставите, если есть гет, тов дом добавляйте риал на страничку без гет.
    2. все остальные редиректы я уже описывал тут.
    вам этого хватит.
    https://klondike-studio.ru/standards/standartnyy-h...
    Ответ написан
    4 комментария
  • Как сделать редирект на корень сайта Apache?

    shambler81
    @shambler81 Куратор тега htaccess
    Гет параметр не является частью урла и по этому RewriteRule его не видет вообще
    для его выделения используют RewriteCond
    В вашем же случае вам нужно его просто удалить
    Сделать это легко
    Redirectmatch 301 ^(.+)CMS/?$ /$1?
    где вопрос в конце удалит гет параметр

    ну или вот так
    RewriteRule ^cms/aaaa$ /? [L,R=301,NC]
    саму регулярку уже подкрутите поскольку в вас в задаче явно не все написано.
    Так же не забывайте про регистрозависимость линукс и добавьте flag NC
    Ответ написан
  • Как сделать красивую ссылку из поддиректории?

    shambler81
    @shambler81 Куратор тега htaccess
    Этим должен заниматься не совсем .htaccess, этим должно заниматься ЧПУ на которое должен уже перекидывать .htaccess
    Только ядро знает что за сущьность эта страница, физическая она или нет и тд.
    то есть урл можно подготовить, но второе с чем вы сталкнетесь это 404 потому что этой страницы тупо нет.
    ПО этмому
    Урл подготавлиает .htaccess а ядро отвечает оно есть у меня
    Вот пример.

    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]
    # Перенаправить все запросы на ЧПУ

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

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{QUERY_STRING} (^|&)id\=(d+)($|&)
    RewriteRule ^catalog\.php$ /id=%2? [L,R=301]
    Ответ написан
    Комментировать
  • Перевод букв в url из верхнего в нижний регистр?

    shambler81
    @shambler81 Куратор тега htaccess
    Какой идиот вам это подсказал?
    Линукс регистрозависимая система, этого делать нельзя!
    Ответ написан
    Комментировать
  • Как убрать ключи из URL?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{QUERY_STRING} (^|&)id\=2($|&)
    RewriteRule ^gdz2/index\.php$ /gdz2/index? [L,R=301]
    Ответ написан
  • Как разместить проект в директории другого сайта?

    shambler81
    @shambler81 Куратор тега htaccess
    5e9817b05740c548156837.png
    ну если прям совсем в лом то можно это сделать даже в графическом интерфейсе ;)
    Ответ написан
    Комментировать