0

index.php で http ルーティングを処理できるようにしようとしているので、アプリを安静にします。

nginx.cong 内で try_files ディレクティブを使用しましたが、機能しませんでした。/blablabla をヒットすると、index.php を通過する代わりに 404 がスローされます。

<pre>

user www-data;
worker_processes  1;

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/*;
server {
 location /  {
   try_files $uri $uri/ /index.php;
}

}
   
}

</pre>
4

2 に答える 2

9

このようなことを試してみたいと思うかもしれませんが、私にとって魅力のように機能します:

location / { 
    try_files $uri $uri/ @rules; 
} 

location @rules { 
    rewrite ^/(.*)$ /index.php?param=$1; 
}

/これにより、Web ルートの場所が検索されます。Web アクセス可能なすべてのファイルは、このディレクトリにあります。ファイルが存在する場合は、そのファイルに移動します。そうでない場合は、@rules ブロックに入れられます。regexp マッチングを使用して、URL のフォーマットを変えることができます。要するに、 は(.*)URL 内の任意の文字列に一致し、インデックスに移動します。元の入力をパラメーターとして index.php にフィードするために、あなたが書いたものを少し変更しました。これを行わないと、スクリプトにはリクエストのルーティング方法に関する情報がありません。

たとえば、次に移動する/blablablaと、URL がマスクされますが、ディレクトリでない/index.php?param=blablabla限りプルアップされます。/blablabla

お役に立てれば!

于 2013-09-11T08:07:24.847 に答える