Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: mod_rewrite, перенаправление всех файлов в другую папку
 
 автор: nbid   (24.02.2010 в 17:22)   письмо автору
 
 

mod_rewrite, перенаправление всех файлов в другую папку

никак не могу сделать, например это самый бред:

RewriteRule ^([http://%{HTTP_HOST}/].*)$ sites/%{HTTP_HOST}/$1 [L]

http://mp/test/contacts.png - нормально перенаправляет
http://mp/uest/contacts.png - не перенаправляет, хотя там есть и папка test с файлом, и папка uest с файлом. что за бред? так со всеми папками которые начинаются на символ "u" и еще на символ "s", другие не проверял. Больше нечего в htaccess нет, БРЕД, объясните пожалуйста.
А так не не работает если попробовать зайти по адресу
http://mp/contacts.png (может тоже если в начале символ "с" то не будет работать)

далее:
RewriteRule ^(.*)$ sites/%{HTTP_HOST}/$1 [L]

самое простое и изящное, НУ ДОЛЖНО работать, а выдает 500 ошибку.
если пытаюсь написать так

RewriteRule ^([a-zA-Z0-9-./]*)$ sites/%{HTTP_HOST}/$1 [L] - тоже 500 ошибка, но
RewriteRule ^([a-zA-Z0-9-.]*)$ sites/%{HTTP_HOST}/$1 [L] - без ошибки, но открывает только корневые файлы, а если в адресе заюзать какую нибудь папку то не получается.

Такое ощущение что апач не дает просто юзать тупо папки, хотя дает, например те у которых имя начинается на символ t например, а вот на u и s не дает :), вот если бы не эта проблема то я бы мог замудрить всю тему.

  Ответить  
 
 автор: .heed   (24.02.2010 в 21:39)
 
   для: nbid   (24.02.2010 в 17:22)
 

RewriteRule ^([a-zA-Z0-9-./]*)$ sites/%{HTTP_HOST}/$1 [L] - тоже 500 ошибка, но

это правило которое будет зацикливаться, срабатывать при каждом следующем перенаправлении.
смотрите в error.log что стало причиной ответа 500

  Ответить  
 
 автор: .heed   (24.02.2010 в 21:42)
 
   для: nbid   (24.02.2010 в 17:22)
 

какое-нибудь
RewriteCond %{REQUEST_URI} !^/sites/
перед таким праилом возможно поможет

  Ответить  
 
 автор: nbid   (25.02.2010 в 12:52)   письмо автору
 
   для: .heed   (24.02.2010 в 21:42)
 

спасибо помогло :)

А еще другой вопрос: Можно ли как нибудь через .htaccess запускать php или perl скрипт, через который можно получить какие нибудь данные, с помощью которых можно перенаправлять.

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

RewriteCond %{REQUEST_URI} !\/sites\/
RewriteRule ^(.*)$ sites/%{HTTP_HOST}/$1 [L]

Вот мне нужно вместо переменной %{HTTP_HOST} иметь какую нибудь другую переменную, с строчкой, полученной из другого php/perl файла. (желательно php).


Я читал о rewriteMap - это вроде то что нужно, но оно только в httpd.conf

И если никак нельзя, и rewriteMap это то что нужно, то как в httpd.conf разрешить юзать rewriteMap через htaccess? :)

  Ответить  
 
 автор: .heed   (25.02.2010 в 17:42)
 
   для: nbid   (25.02.2010 в 12:52)
 

что-то я себе не могу придумать ситуацию когда вообще нужны такие перенаправления.
Если ещё как-то можно допустить что обращения ывают например к поддоменам wap или www, и поэтому нужно проверять http_host, то достаточно просто проверять на совпадение префикс.
Но само по себе можно просто при создании субдоменов указать какое document_root какие из них будут использовать, поэтому даже такой rewrite как-бы только лишние тормоза серверу, в conf можно сделать всё намного оптимальнее.

> какую нибудь другую переменную ....
, т.е. подзапрос выполнения и возврата значения между чтением htaccess и отдачей того что запрашивают?
Это вряд-ли. Можно просто установить глобальную переменную каким-нибудь SetEnv или SetEnvIf даже используя какие-нибудь условия.
разве-что какие-то модули типа mod_perl могут кое-чего позволять

  Ответить  
 
 автор: nbid   (26.02.2010 в 02:28)   письмо автору
 
   для: .heed   (25.02.2010 в 17:42)
 

мне это нужно для создания многосайтовой системы... =)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования