2017-08-23 6 views
0

/theme/theme_1/*に/assets/* - >を書き直そうとしています。 書き換えURLは、.php-filesを除くすべてのファイルで機能します。Nginx - 書き換え後にPHPファイルが見つかりません

例のファイル構造:

  • /theme/theme_1/images/image.jpg
  • /theme/theme_1/images/user.jpg
  • /theme/theme_1/ajax/register.php
  • /theme/theme_1/ajax/read.php

問題は、私はこのURLで404を取得し、PHP-ファイルです: wgetのhttp://example.com/assets/ajax/read.php。 ファイルが発見された(200)(200)他のすべてのファイルが正常に動作しフルパスにhttp://example.com/theme/theme_1/ajax/read.php

を使用して: wgetのhttp://example.com/assets/images/image.jpg

nginxの設定ファイル:

server { 
    listen 80 default_server; 

    root /var/www/html; 
    index index.php index.html 
    server_name mysite.com; 

    location ~ \.php$ { 
    include snippets/fastcgi-php.conf; 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    } 

    location /assets { 
    rewrite ^/assets/(.*) /theme/theme_1/$1 break; 
    } 

    location/{ 
    try_files $uri $uri/ /index.php?$args; 
    } 
} 
+0

'break'ではなく' last'を試してください。 –

+0

これでうまくいかない場合は、 'try_files $ uri $ uri /index.php?$ args;'を 'location/assets {'ブロックに追加してください。 –

+0

返信ありがとうございます。シンボリックリンクで簡単に修正しました。最高の解決策ではなく、私はむしろnginx-fixを持っているだろう:) – papegoj

答えて

0

Okieをあなたはこの

location /assets/ { 
    alias /var/www/html/theme/theme_1/; 
    } 
を試してみてください

それでも解決しない場合は、

location /assets/ { 
    alias /var/www/html/theme/theme_1/; 
    try_files $uri $uri/ /index.php?$args; 
    } 

編集-1

二表情で私は~ \.php {ブロックがphp拡張子を持つすべてのものや、他のassetsブロックが呼び出されることはありません飽きないことができますキャッチすると、以前の答えは動作しません実現しています。だから解決策はPHPブロックの中に書き直しをネストすることです。だから使用する

location ~ \.php$ { 
    rewrite ^/assets/(.*)$ /theme/theme_1/$1; 

    include snippets/fastcgi-php.conf; 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    } 
+0

申し訳ありませんが、上記のどれも働かなかった。 あなたが送信した設定のいくつかの変更を試みました。書き換えの有無に似ています。 try_filesなどの完全なパスです。私はシンボリックリンクに固執しています。これ以上のアイデアは? – papegoj

+0

@papegoj、私の編集を確認してください –

+0

Edit-1はそのトリックをしました。あなたの助けてくれてありがとう@ tarun-lalwani – papegoj

関連する問題