Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: .htaccess - помогите добавить маршрут

Добрый день.

У меня имеется htaccess, который открывает доступ только к одной папке, при любом запросе. Мне нужно добавить доступ к другой папке. Я ничего не понимаю в настройке htaccess, поэтому прошу помощи. Я думаю, что для знающего человека это секундное дело.

Итак, вот имеем файл:

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/public [NC]
RewriteRule (.*) /public/$1 [L]


Этими командами все запросы перенаправляются в папку "public". Мне нужно добавить еще один путь к другой папке. Например такой:



Как это сделать? Помогите, пожалуйста.
Ответ:
У Вас по сути проверяются 2 условия, и весь трафик отправляется в /public, если имя домена = domain.ru и запрашиваемая URL не начинается с /public.

Запрос к URL  попадает в оба эти правила.

Для того, что бы Вас не переадресовывало на /public, когда запрашиваете /phpmyadmin, добавьте еще одно условие перед RewriteRule:
Код

RewriteCond %{REQUEST_URI} !^/phpmyadmin [NC]


Ссылкой на  я поделился уже раз 10 

Это сообщение отредактировал(а) ИшТы - 10.11.2014, 16:26
Вопрос: Настройка .htaccess

Добрый день!
У меня вопрос есть. Как настроить .htaccess так, что бы если человек переходит по ссылке он перенаправлялся на другой url?
Заранее спасибо!
Ответ: кури в сторону mod_rewrite .


А вообще вот подробный пример:

Вопрос: Настройка .htaccess

Добрый вечер!
Такая вот задачка, много примеров находит в интернете, но никак не могу толково организовать, может вы чего подскажите

Есть вот такой линк:
http://localhost/ru/?go=view-news&namelink=z-dnem-zahisnika-ukrayini&id=2

Как сделать вот так:
http://localhost/ru/view-news/z-dnem-zahisnika-ukrayini/2

вот какой у меня .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php?$ [L,QSA]


Заранее ОГРОМНОЕ спасибо!!!
Ответ:
Кому интересно, вот подсказали такое решение:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z]{2})/view-news/([a-zA-Z0-9\-]+)-([0-9]+)/$ /?go=view-news&namelink=$2&id=$3 [L]
RewriteRule .* index.php?$1 [L,QSA]
Вопрос: htaccess кто нибудь может помочь новичку?

подскажите пожалуйста для новечка, как пользоваться htaccess?
есть свой хост бла.ру
как заблокировать доступ по ip?
создал файл в папке где лежит index.html
htaccess
## USER IP BANNING
<Limit GET POST>
 order allow,deny
 deny from 192.168.1.1
 allow from all
</Limit>
 
Захожу с этого адреса все равно пускает и не блокирует
1.нужны ли какие либо дополнительные настройки Apache для работы htaccess?
2.куда именно ложить htaccess, в корневую папку сайта :
www/site/index.php
www/site/.htaccess  -в таком случае будет блокироваться все что в папке site?
www/site/root/.htaccess  -в таком случае будет блокироваться все что в папке root?
Проверял бан не только по локальным Ip, но и по внешним- не работает
3.нужно ли перезагружать ahache после изменения настроек htaccess?
 
 
Ответ: Mavrikii
Конфиг на самом деле не совсем такой....  
alias редиректит перед www .....
Вопрос: брать картинки с основной папки домена( .htaccess

Здравствуйте, огромнейшая просьба, подскажите как реализовать с помощью  .htaccess 



Есть домен site.ru  , сделал поддомен subdomen.site.ru , папка с поддоменом лежит в корне   site.ru

Нужно что бы на поддомене (путь site.ru/subdomen/images) показывались картинки которые находятся в папке site.ru/images   , все находиться на одном хосте

Заранее большое спасибо
Ответ:
симлинк сделать не вариант?

Если уж так нужно реализовать это с помощью .htaccess:
Код

RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomen.site.ru$ [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*\.(gif|jpg|jpeg|png|ico)$ http://www.site.ru/images/$1 [R,L]


В этом случае subdomen.site.ru будет меняться на site.ru/images/ для картинок

На всякий случай 
Вопрос: Автоматические субдомены через .htaccess

Всем привет. Размещаюсь на виртуальном unix хостинге. Возникла потребность в автоматических субдоменах. На хостинге прописал *.example.com. В корне сайта создал папку domains и в ней уже размещаю субдомена www, panel, ... В корне сайта содержится .htaccess со следующим содержимым:

Код
#Устанавливаем кодировку сайта
AddDefaultCharset utf-8

#Переадресации при разных ошибках
ErrorDocument 403 http://example.com/
ErrorDocument 404 http://example.com/

#Скрываем содержимое папок
Options All -Indexes

#Включаем преобразование ссылок
RewriteEngine on

#Склеиваем index.php с доменом
#RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
#RewriteRule ^index\.php$ / [R=301,L]

#Принудительная подстановка замыкающего слеша
#RewriteCond %{REQUEST_URI} /+[^\.]+$
#RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule .* - [L]

RewriteCond %{HTTP_HOST} ^([^.]*)\.example\.com$
RewriteCond %{REQUEST_URI} !^/domains
RewriteRule ^(.*)$ /domains/%1/$1 [QSA,L]

#Ловим переменные из урл
RewriteRule ^(.*)(\/|\.html)$ index.php?data=$1&last=$2 [L,QSA]

Судбомена открываются как по мне нормально, но есть ошибки, хотя не везде.

При открытии ссылки  ошибки нет.
При открытии ссылки  ошибка следующая, за 1 открытие ссылки:

Цитата
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com

Как исправить ошибки и реализовать следующее?

Цитата
1. открыв  нас переадресует 301 редиректом на 
2. открыв  нас переадресует 301 редиректом на 

Спасибо!
Ответ:
Всем привет. Размещаюсь на виртуальном unix хостинге. Возникла потребность в автоматических субдоменах. На хостинге прописал *.example.com. В корне сайта создал папку domains и в ней уже размещаю субдомена www, panel, ... В корне сайта содержится .htaccess со следующим содержимым:

Код
#Устанавливаем кодировку сайта
AddDefaultCharset utf-8

#Переадресации при разных ошибках
ErrorDocument 403 http://example.com/
ErrorDocument 404 http://example.com/

#Скрываем содержимое папок
Options All -Indexes

#Включаем преобразование ссылок
RewriteEngine on

#Склеиваем index.php с доменом
#RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
#RewriteRule ^index\.php$ / [R=301,L]

#Принудительная подстановка замыкающего слеша
#RewriteCond %{REQUEST_URI} /+[^\.]+$
#RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule .* - [L]

RewriteCond %{HTTP_HOST} ^([^.]*)\.example\.com$
RewriteCond %{REQUEST_URI} !^/domains
RewriteRule ^(.*)$ /domains/%1/$1 [QSA,L]

#Ловим переменные из урл
RewriteRule ^(.*)(\/|\.html)$ index.php?data=$1&last=$2 [L,QSA]

Судбомена открываются как по мне нормально, но есть ошибки, хотя не везде.

При открытии ссылки  ошибки нет.
При открытии ссылки  ошибка следующая, за 1 открытие ссылки:

Цитата
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com

Как исправить ошибки и реализовать следующее?

Цитата
1. открыв  нас переадресует 301 редиректом на 
2. открыв  нас переадресует 301 редиректом на 

Спасибо!
Вопрос: .htaccess работает от корня диска

Приветствую. Убил полдня, пока докопался до причины. Итак, есть Dev-машина на XP SP3 + все обновы, Apache:
Код

C:\Program Files\Apache Software Foundation\Apache2.2\bin>httpd.exe -v
Server version: Apache/2.2.11 (Win32)
Server built:   Dec 10 2008 00:10:06

C:\Program Files\Apache Software Foundation\Apache2.2\bin>httpd.exe -V
Server version: Apache/2.2.11 (Win32)
Server built:   Dec 10 2008 00:10:06
Server's Module Magic Number: 20051115:21
Server loaded:  APR 1.3.3, APR-Util 1.3.4
Compiled using: APR 1.3.3, APR-Util 1.3.4
Architecture:   32-bit
Server MPM:     WinNT
  threaded:     yes (fixed thread count)
    forked:     no
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/winnt"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/apache"
 -D SUEXEC_BIN="/apache/bin/suexec"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error.log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

+PHP, ну и ещё стоят MySQL и PostgreSQL, впрочем они тут не участвуют.

Суть проблемы. С какого то момента перестали показываться каталоги без index.html/php. Апач упорно выдавал
Код

403 Forbidden
You don't have permission to access / on this server.

записи в логе говорили о запрете просмотра каталогов без индекс-файлов:
Код

[Fri May 23 10:19:58 2015] [error] [client 127.0.0.1] Directory index forbidden by Options directive: C:/WebServers/home/test2/

Буквально вчера всё работало, последие правки в конфиг вносились 3 месяца назад. Сам конфиг прост как двери и почти не отличается от дефолтного:
Код

ThreadsPerChild 250
MaxRequestsPerChild  0
ServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2"
Listen 80

LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule imagemap_module modules/mod_imagemap.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule userdir_module modules/mod_userdir.so

ServerAdmin blablabla@bla.bla

ScriptAlias /php/ "c:/PHP-5.4.38/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php-cgi.exe"

DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"

<Directory />
AllowOverride All
</Directory>

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">
    Options +Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
</FilesMatch>

ErrorLog logs/error.log
LogLevel warn

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog logs/access.log common
</IfModule>

<IfModule alias_module>
    ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/"
</IfModule>

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

DefaultType text/plain

<IfModule mime_module>
    TypesConfig conf/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
</IfModule>

NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot c:/webservers/home/test2
    ServerName test2
    ServerAlias test2
</VirtualHost>

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

В корне C:/WebServers/home/test2/ естественно не было никаких .htaccess. Я долго ломал голову, правил конфиг и так и эдак. Ничего не помогало. Пока случайно не обнаружил в корне диска C: файл .htaccess такого содержания:
Код

DirectoryIndex index.php index.html
Options -Indexes

Файл я по запаре откуда-то скопировал, да там и забыл. Удалил его, всё наладилось. Вернул назад - опять не пускает. Ещё раз повторю, файл лежал в C:\.htaccess

Вот теперь сижу и соображаю, это баг или фича? Или где-то у меня рукожопие? Почему .htaccess действует оттуда, откуда апач его вообще не должнен брать? 
Ответ:
Это не баг и не фича.

Следующая секция в Вашем конфиге заставляет Апач читать .htaccess из корня диска и распространять правила из него на все папки. 
Код

<Directory />
AllowOverride All
</Directory>


Создайте еще один .htaccess в папке сайта (C:/WebServers/home/test2/) со следующим содержанием и он перекроет параметр "-Indexes" из .htaccess  в корне диска:
Код

Options +Indexes


Так для справки "+Indexes" разрешает просмотр содержимого каталогов.
Вопрос: Настройка .htaccess обращение к файлам php без указания их расширения

Всем привет, как написать что б скажем при обращении по адресу
mysite.ru/list
он вызывал файл list.php лежащий в корне сайта
а при общении к mysite.ru/list/item
он вызывал файл item.php лежащий в папке list
Ответ:
Пробую такое содержимое файла

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ $1.php

для такого адреса
mysite.ru/list
файл list.php не вызывается хотя папки list в корне сайта я пока не создавал

пробую даже так
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^list$ list.php
все равно не вызывается файл list.php
так работает mysite.ru/list.php
но нужно сделать что б без указания расширения

Нашел решение в нете
RewriteEngine On
RewriteRule ^(\w+)$ $1.php [NC]

(Отредактировано автором: 21 Июня, 2015 - 19:37:46)

Вопрос: htaccess перенаправление

Приветствую.

Есть такая структура папок:

/main (вход по индексному файлу в ней)
/main/css 
/main/css/img

Из корня main запускается административное управление, в котором используется визуальный редактор. Документы подготовленные в нем ложаться в папку:

/doc

а изображения вставленные в них в папку:

/public/images/X
и 
/public/images/doc/X

где Х - это номер идентификатора владельца документа, и папок Х может быть сколько угодно.

То есть src изображений имеет путь /public/images/X/имя_файла.ext или /public/images/doc/X/имя_файла.ext.

Обмен клиент-сервер административного раздела производится на Ajax, запросы которого направляются к индексному файлу /main. Используется сессия. Все работает, но если в документ вставлено изображение и форма отправляется, то происходит запрос к индексному файлу сайта, стартуется сессия и соответсвенно "крошит" необходимое в сесии запущенной /main.

Происходило это потому, что в индексном файле администрироввания был прописан базовый путь корня сайта (по причине src изображений в документах). Пришлось это удалить, но открытые документы в редакторе естественно перестали отображать изображения. Есть решение этого, но хотел попробовать задейстовать htaccess, и толи тяму на это не хвтает, то-ли ...

В общем вопрос:

как через htaccess перенаправить запросы изображений из редактора /public/public/images/X/имя_файла.ext или /public/public/images/doc/X/имя_файла.ext в /public/images/X/имя_файла.ext или /public/images/doc/X/имя_файла.ext?   

Что-то даже указывая абсолютные пути ничего у меня не получается.
 






Это сообщение отредактировал(а) whatisnot - 14.12.2014, 22:24
Ответ:
Да оно не причем, это я данного раздела не нашел на форуме, посичтал что это подходит. )
Вопрос: htaccess - не получается защитить опр. типы файлов

Здравствуйте. 
Пишу в .htaccess
Код

<Files ~ "\.(mp3)$">
    order allow,deny
    deny from all
</Files>

Пытаюсь тем самым защитить от скачивания такие типы файлов, но не смотря на это сервер отдает файл в браузер.
Ранее такой код работал, но на другом севере.
Вот и думаю может что-то , на текущем севере, не доустановлено ??? Посоветуйте что нибудь.
Ответ:
Цитата(_zorn_ @ 13.5.2014,  05:26)
Зачем городить ерунду с htaccess если у тебя есть доступ к конфигу nginx ?


Признаюсь в nginx ни разу не работал, в осн. в htaccess, поэтому больше на него и ссылаюсь, хотя да, нужно почитать и разобраться. Спасибо за совет.