|
|
|
| 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] | |
|
|
|
|
|
|
|
для: ....
(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)$"> | |
|
|
|