mod_rewrite и .htaccess

S
На сайте с 22.02.2010
Offline
8
1027

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

написал в .htaccess простой редирект в папке images/news

RewriteEngine On

RewriteRule ^.*$ /phpinfo.php

и тестирую две страницы

http://www.gardenshop.com.ua/images/news/index.html - перенаправляет

http://www.gardenshop.com.ua/images/news/www.jpg - не перенаправляет

получается что если на входе картинка, то правило не работает. Есть мысли, а то я уже запарился?

dma84
На сайте с 21.04.2009
Offline
168
#1

тогда уж так:

RewriteEngine On
RewriteRule ^(.*)\.(jpg|png|xxx)$ /phpinfo.php
[Удален]
#2

проверте нет ли у вас в конфиге апача вот такой строки

RewriteCond %{REQUEST_FILENAME} !-f
S
На сайте с 22.02.2010
Offline
8
#3

Сделал

RewriteEngine On

RewriteRule ^(.*)\.(jpg|png|xxx)$ /phpinfo.php

не работает, оно и не должно работать, ведь RewriteRule ^.*$ /phpinfo.php это общий случай

dma84
На сайте с 21.04.2009
Offline
168
#4

Попробуйте так

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)\.(jpg|png|gif)$ /phpinfo.php
S
На сайте с 22.02.2010
Offline
8
#5
Soulwest:
проверте нет ли у вас в конфиге апача вот такой строки

нет, апач я смотрел, правил - ничего не помогает. Есть подозоение на версию апача. На локали версия 2.2.11 а на хосте 2.2.17

salymon добавил 24.02.2011 в 22:57

dma84:
Попробуйте так
RewriteCond %{REQUEST_FILENAME} -f

RewriteRule ^(.*)\.(jpg|png|gif)$ /phpinfo.php

- не работает

вот код, который должен работать на хосте

<FilesMatch ".(php|php3|phtml|inc|c|htm|html|pl|cgi)$">

Order Allow,Deny

Deny from all

</FilesMatch>

DirectoryIndex index.php

<FilesMatch "\.(gif|jpg|png|JPG|jpeg)$">

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f

RewriteRule ^(.*)$ /watermark/_watermark.php [T=application/x-httpd-php,L,QSA]

</FilesMatch>

[Удален]
#6

А nginx настроен отдавать статику ?? если да, то до апача запросы просто не доодят...

S
На сайте с 22.02.2010
Offline
8
#7
Soulwest:
А nginx настроен отдавать статику ?? если да, то до апача запросы просто не доодят...

буду изучать nginx и как настраивать статику)

salymon добавил 24.02.2011 в 23:24

вот nginx;

user nginx;

worker_processes 10;

worker_rlimit_nofile 100000;

error_log /var/log/nginx/error.log;

#error_log /var/log/nginx/error.log notice;

#error_log /var/log/nginx/error.log info;

pid /var/run/nginx.pid;

events {

worker_connections 1024;

use epoll;

}

http {

include /etc/nginx/mime.types;

default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;

tcp_nopush on;

tcp_nodelay on;

server_tokens off;

gzip on;

gzip_static on;

gzip_comp_level 5;

gzip_min_length 1024;

keepalive_timeout 65;

limit_zone myzone $binary_remote_addr 10m;

# Load config files from the /etc/nginx/conf.d directory

include /etc/nginx/conf.d/*.conf;

# another virtual host using mix of IP-, name-, and port-based configuration

#

#server {

# listen 8000;

# listen somename:8080;

# server_name somename alias another.alias;

# location / {

# root html;

# index index.html index.htm;

# }

#}

# HTTPS server

#

#server {

# listen 443;

# server_name localhost;

# ssl on;

# ssl_certificate cert.pem;

# ssl_certificate_key cert.key;

# ssl_session_timeout 5m;

# ssl_protocols SSLv2 SSLv3 TLSv1;

# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

# ssl_prefer_server_ciphers on;

# location / {

# root html;

# index index.html index.htm;

# }

#}

client_max_body_size 16m;

log_format isp '$bytes_sent $request_length';

server {

listen 91.218.37.192:80;

server_name gardenshop.com.ua www.gardenshop.com.ua;

rewrite ^(/manager/.*)$ https://$host$1 permanent;

error_page 404 = @fallback;

location ~* ^/(webstat/|awstats|webmail/|myadmin/|manimg/) {

proxy_pass http://91.218.37.192:8080;

proxy_redirect http://gardenshop.com.ua:8080/ /;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

}

location / {

proxy_pass http://91.218.37.192:8080;

proxy_redirect http://gardenshop.com.ua:8080/ /;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

}

location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {

root /var/www/titoman/data/www/gardenshop.com.ua;

access_log /var/www/httpd-logs/gardenshop.com.ua.access.log ;

access_log /var/www/nginx-logs/titoman isp;

}

location @fallback {

proxy_pass http://91.218.37.192:8080;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

}

}

}

[Удален]
#8

Легкий вариант(не совсем правильный):

location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
root /var/www/titoman/data/www/gardenshop.com.ua;
access_log /var/www/httpd-logs/gardenshop.com.ua.access.log ;
access_log /var/www/nginx-logs/titoman isp;
}

убрать здесь в регулярке нужные расширения и выполнение будет передаваться на апач.

Тяжелый вариант(правильный) :

написать регулярку для того, чтоб он нужные запросы, "выполнял на php". Php запущен в режиме fcgi, так что много проблем возникнуть не должно.

S
На сайте с 22.02.2010
Offline
8
#9
Soulwest:
А nginx настроен отдавать статику ?? если да, то до апача запросы просто не доодят...

Спасибо, заработало! Сделал пока "лёгкий вариант"

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий