0

zendフレームワークを使用するWebページがあります。Webは実際にリライトを使用します。私はzendフレームワークwinnginxをセットアップする方法をグーグルで検索しました。彼らはそれらのデフォルトの書き換え.htaccessをnginxに変換する必要はないと言いました。

とにかくここに.htaccessがあります

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

RewriteRule ^robots\.txt$ robots.txt

Webページのnginx構成は次のとおりです。

server {
    listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

    root /var/www/vhosts/domain.lt/httpdocs;
    index index.php;

    # Make site accessible from http://localhost/
    server_name domain.lt;
    server_name www.domain.lt;

    location / {
        if (-f $request_filename) {
                root /var/www/vhosts/domain.lt/httpdocs;
            }   
    }

    location ~* ^/(favicon.ico|robots.txt)$ {
            access_log off;
            log_not_found off;
    }

    error_page  404 = /index.php;   

    # redirect server error pages to the static page /50x.html
    #
    #error_page 500 502 503 504 /50x.html;
    #location = /50x.html {
    #   root /usr/share/nginx/www;
    #}

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
    #   # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        #fastcgi_param  SCRIPT_FILENAME /var/www/vhosts/domain.lt/httpdocs/index.php;
        include fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny all;
    }

    location ~* \.(css|js|jpeg|jpg|gif|png|ico|xml)$ {
         access_log off;
         expires 30d;
    }
}

そして最後にエラー自体:

2013/02/03 01:52:13 [error] 12293#0: *29 open() "/var/www/vhosts/domain.lt/httpdocs/daiktai/kategorija/slaugos-ir-higienos-priemones/page/147" failed (2: No such file or directory), client: 66.249.75.237, server: domain.lt, request: "GET /daiktai/kategorija/slaugos-ir-higienos-priemones/page/147 HTTP/1.1", host: "www.domain.lt"

ご覧のとおり、nginxはすべての書き換えをファイルエントリと見なしますが、もちろん、これは存在しません。この問題を解決するにはどうすればよいですか?Webページは、実際には書き直さなくてもうまく機能します。私の質問は、これらのエラーをerror.logから削除する方法と、そのhtaccessファイルをnginx書き換えに変換する必要があるかどうかです。もしそうなら、それを変換していただけますか?私はいくつかのオンラインコンバーターを試しました-RewriteCondそしてRewriteRule完全に無視しました。

4

1 に答える 1

0

見つかった解決策:

この部分全体が間違っています

 location / {
        if (-f $request_filename) {
                root /var/www/vhosts/domain.lt/httpdocs;
            }   
    }

これを追加しただけですserver

 try_files $uri $uri/ /index.php;

そしてこれにlocation ~ \.php$

    try_files $uri =404;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;
于 2013-02-03T21:05:31.023 に答える