Есть два небольших файла .htaccess нужно переписать их в правила nginx Пользовался сервисами winginx.ru/htaccess и www.anilcetin.com/convert-apache-htaccess-to-nginx/ - не помогло, в одном случае выскакивала ошибка при попытке перезагрузить nginx: service nginx reload nginx: [emerg] pcre_compile() failed: nothing to repeat in "^/(.*)?*$" at "*$" in /etc/nginx/nginx.conf:537 nginx: configuration file /etc/nginx/nginx.conf test failed В другом случае просто ничего не работало. Помогите пожалуйста, вот содержимое файлов htaccess: 1. Находится в корне сайта AddDefaultCharset UTF-8 Options +FollowSymlinks RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\?*$ index.php?_route_=$1 [L,QSA] 2. Находится в папке /image/cache/ Options +FollowSymlinks RewriteEngine On RewriteBase /image/cache/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\?*$ image_gate.php?image=$1 [L,QSA] Помогите пожалуйста
Первый случай Код (PHP): location / { index index.php; if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?_route_=$1 last; } } Второй случай Код (PHP): location /image/cache/ { root /; if (!-e $request_filename) { rewrite ^/(.*)$ image_gate.php?image=$1 last; } } Во втором случае если ошибку покажет -- закоментить root /; Добавлено спустя 5 минут 53 секунды: Код (Text): location ~ /\.htaccess {deny all;} Тож можно добавить xDD
image_gate.php находится в папке /image/cache/ К сожалению вторая часть не заработала... Вариант location /image/cache/ { root /image/cache/; if (!-e $request_filename) { rewrite ^/(.*)$ image_gate.php?image=$1 last; } } дает такие ошибки в nginx: 63.125.36.40 - - [06/Apr/2013:15:44:42 +0200] "GET /image/cache/data/p/182000/182848-120x120.jpg HTTP/1.1" 404 3652 "http://domen.co.uk/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31 AlexaToolbar/alxg-3.1" "-"
Код (PHP): location /image/cache/ { if (!-e $request_filename){ rewrite ^/image/cache/(.*)\?*$ /image/cache/image_gate.php?image=$1 break; } }}
Нет, к сожалению. так тоже не заработало. Там в конце скобка лишняя... Какие-нибудь ещё варианты будут? Кстати, может поможет, полный конфиг для домена у меня выглядит примерно таким образом: Код (Text): server { listen 65.211.183.18:80; server_name .domen.co.uk; location / { root /home/domen.co.uk; index index.php index.html index.htm; if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?_route_=$1 last; } } location /image/cache/ { if (!-e $request_filename){ rewrite ^/image/cache/(.*)\?*$ /image/cache/image_gate.php?image=$1 break; } } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { root /home/domen.co.uk; try_files $uri =404; fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } location ~ /\.ht { deny all; } } Добавлено спустя 32 минуты 27 секунд: заглянул в /var/log/nginx/error.log а там вот такие интересные ошибки: Код (Text): 2013/04/06 19:58:11 [error] 12711#0: *3673 open() "/usr/share/nginx/html/image/cache/image_gate.php" failed (2: No such file or directory), client: 93.125.37.2, server: domen.co.uk, request: "GET /image/cache/data/p/22000/22778-120x120.jpg HTTP/1.1", host: "domen.co.uk", referrer: "http://domen.co.uk/" Очевидно проблема с путями, ведь по адресу /usr/share/nginx/html/image/cache/image_gate.php файла image_gate.php нет, он расположен: Код (Text): /home/domen.co.uk/image/cache/image_gate.php Помогите конфиг допилить, сталось совсем немного))
Код (PHP): location /image/cache/ { root /home/domen.co.uk; if (!-e $request_filename){ rewrite ^/image/cache/(.*)\?*$ /image/cache/image_gate.php?image=$1 break; } }
Чесно говоря даже последний код не дал никакого результата. А ошибки в /var/log/nginx/error.log касательно картинок исчезли. Перепробовав ещё несколько вариантов я уже был готов идти покупать хостинг с апачем... Просмотрев конфиг ещё раз, конфиги других сайтов, я поменял break на last и вуаля, все заработало!!! Спасибо r3l0c! На нескольких форумах эту тему создал, а ответили только тут! Спасибо!