Mod Rewrite на NGINX не отдает CSS (решено)

Здравствуйте. На сервере Debian 6, Nginx и PHP через FastCGI. Используется фреймворк. Он требует Mod Rewrite. На своем ноутбуке стоял Apache, на нем все работало хорошо. На сервере скрипты работают но нет доступа к файлам таблиц стилей (.css), на запрос к ним сервер отвечает ошибкой 404, в итоге вся верстка сползает. Вот конфиг nginx.conf:

/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .ini.geshi_code {font-family:monospace;} .ini.geshi_code .imp {font-weight: bold; color: red;} .ini.geshi_code .co0 {color: #666666; font-style: italic;} .ini.geshi_code .sy0 {color: #000066; font-weight:bold;} .ini.geshi_code .st0 {color: #933;} .ini.geshi_code .re0 {color: #000066; font-weight:bold;} .ini.geshi_code .re1 {color: #000099;} .ini.geshi_code .re2 {color: #660066;} .ini.geshi_code span.xtra { display:block; }

  user www-data www-data;
  worker_processes  5;

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

  events {
    worker_connections  1024;
    # multi_accept on;
  }

  http {
    include       /etc/nginx/mime.types;

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

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;

    gzip  on;
    gzip_disable "MSIE [1-6].(?!.*SV1)";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
  }

  # mail {
  #     # See sample authentication script at:
  #     # http://wiki.nginx.org/NginxImapAuthenticateWithApachePhpScript
  #
  #     # auth_http localhost/auth.php;
  #     # pop3_capabilities "TOP" "USER";
  #     # imap_capabilities "IMAP4rev1" "UIDPLUS";
  #
  #     server {
  #         listen     localhost:110;
  #         protocol   pop3;
  #         proxy      on;
  #     }
  #
  #     server {
  #         listen     localhost:143;
  #         protocol   imap;
  #         proxy      on;
  #     }
  # }
 


Файл конфигурации сайта:

/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .ini.geshi_code {font-family:monospace;} .ini.geshi_code .imp {font-weight: bold; color: red;} .ini.geshi_code .co0 {color: #666666; font-style: italic;} .ini.geshi_code .sy0 {color: #000066; font-weight:bold;} .ini.geshi_code .st0 {color: #933;} .ini.geshi_code .re0 {color: #000066; font-weight:bold;} .ini.geshi_code .re1 {color: #000099;} .ini.geshi_code .re2 {color: #660066;} .ini.geshi_code span.xtra { display:block; }

  server {
    listen 176.58.120.223:80;
    server_name ***.ru;

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

    location / {
      root /srv/nginx/***/www/;
      index index.htm index.html index.php;
      autoindex off;
      # don’t check $uri/, send to php for nice error message
      try_files $uri /index.php?$query_string;
    }

    location ~ .php$ {
      root           /srv/nginx/***/www/;
      fastcgi_pass   127.0.0.1:9000;
      fastcgi_index  index.php;
      fastcgi_param  SCRIPT_FILENAME  /srv/nginx/***/www/$fastcgi_script_name;
      include        fastcgi_params;
    }

  }

 


Файл .htaccess (был взят из фрейворка и переделан на сайте http://winginx.ru/htaccess под Nginx):

/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .ini.geshi_code {font-family:monospace;} .ini.geshi_code .imp {font-weight: bold; color: red;} .ini.geshi_code .co0 {color: #666666; font-style: italic;} .ini.geshi_code .sy0 {color: #000066; font-weight:bold;} .ini.geshi_code .st0 {color: #933;} .ini.geshi_code .re0 {color: #000066; font-weight:bold;} .ini.geshi_code .re1 {color: #000099;} .ini.geshi_code .re2 {color: #660066;} .ini.geshi_code span.xtra { display:block; }

  # Turn on URL rewriting
  RewriteEngine On

  # Installation directory
  RewriteBase /

  # Protect hidden files from being viewed
  <Files .*>
    Order Deny,Allow
    Deny From All
  </Files>

  # Protect application and system files from being viewed
  RewriteRule ^(?:application|modules|system)b.* index.php/$0 [L]

  # Allow any files or directories that exist to be displayed directly
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d

  # Rewrite all other URLs to index.php/URL
  RewriteRule .* index.php/$0 [PT]
 


Решилось добавлением строк:

/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .ini.geshi_code {font-family:monospace;} .ini.geshi_code .imp {font-weight: bold; color: red;} .ini.geshi_code .co0 {color: #666666; font-style: italic;} .ini.geshi_code .sy0 {color: #000066; font-weight:bold;} .ini.geshi_code .st0 {color: #933;} .ini.geshi_code .re0 {color: #000066; font-weight:bold;} .ini.geshi_code .re1 {color: #000099;} .ini.geshi_code .re2 {color: #660066;} .ini.geshi_code span.xtra { display:block; }

  location ~* .css|.js|.jpg|.jpeg|.png|.gif|.swf|.svg|.tiff|.pdf$ {
    root /srv/nginx/<directory>/www/;
  }
 


Всем спасибо.

1 ответов


1. Посмотреть что css реально существуют по запрашиваемому адресу
- /css/main.css =>ls -la /srv/nginx/***/www/css/main.css
2. посмотреть .htaccess на предмет правил для обработки css


Привет. У меня такая же проблема была. Решилась просто:
переделанный .htaccess content на nginx rules надо в конфиге добавлять не просто, а обязательно в location / {..... }, иначе css не работает.