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

Форум Apache

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

 

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

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

тема: абсолютный Substitution у RewriteRule
 
 автор: 1999   (17.11.2009 в 02:43)   письмо автору
 
 

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule
Здесь сказано, что у RewriteRule синтаксис такой:

RewriteRule Pattern Substitution [flags]


Вопрос. Есть домен, у которого DOCUMENT_ROOT скажем /home/domains/domain.com/www
Можно ли как-то задать Substitution у RewriteRule так, чтобы необходимая директория была на одном уровне с директорией www?

На примере:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/pic/(admin|common)/.+\.(jp(e)?g|gif|png)$ [NC]
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/../cms/assets/$1 [L]


В таком виде не пропускает - выдает 400 ошибку

  Ответить  
 
 автор: ....   (17.11.2009 в 11:38)
 
   для: 1999   (17.11.2009 в 02:43)
 

>RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/../cms/assets/$1

DOCUMENT_ROOT там никаких не можнт быть, изменяется именно строка запроса адреса, а не запроса пути у файлу.
mod_ewrite выполняет преобразование REQUEST_URI
, и "Substitution" может быть только новым REQUEST_URI или его частью относительно текущей дирректории,
или даже полной http-ссылкой если с флагом [P] или [R]

  Ответить  
 
 автор: 1999   (17.11.2009 в 13:07)   письмо автору
 
   для: ....   (17.11.2009 в 11:38)
 

Чтобы не быть голословным, приведу документацию:

The Substitution of a rewrite rule is the string that replaces the original URL-path that was matched by Pattern. The Substitution may be a:

- file-system path
    Designates the location on the file-system of the resource to be delivered to the client.
- URL-path
    A DocumentRoot-relative path to the resource to be served
- Absolute URL
    If an absolute URL is specified, mod_rewrite checks to see whether the hostname matches the current host.
- (dash)
    A dash indicates that no substitution should be performed


Я имею в виду конкретно первый пункт - file-system path

  Ответить  
 
 автор: ....   (17.11.2009 в 14:43)
 
   для: 1999   (17.11.2009 в 13:07)
 

незнаю что они имели ввиду, возможно просто что запис может быть вида "../../tile.ext"
, но у меня работает только если получившийся в итоге путь не выйдет за пределы / (document_root)
, начало с / воспринимается как путь от корня сайта, а с буквы диска как в текущей дирректории.

Правда заметил одну странность, пробуя решить задачу из вашей соседней темы, примерно таким образом
<FilesMatch "\..(gif|jpe?g|css|js)$">
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /assets/$1 [R]
</FilesMatch>

Странно , но RewriteRule анализирует именно полный путь к файлу на диске
, возможно и есть в тех словах подтверждение что это может где-то работать , но у меня под виндовс не работает

  Ответить  
 
 автор: ....   (17.11.2009 в 14:56)
 
   для: ....   (17.11.2009 в 14:43)
 

опечатка <FilesMatch "\.(gif|jpe?g|css|js)$">

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

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