2016-08-11 3 views
0

私はNginxで新しく、私のプロジェクトではすべてのリクエストをリクエストハンドラであるindex.phpに書き直す必要があります。 Apacheで.htaccessファイルを使ってこれを行いましたが、Nginxと互換性を持たせたいと思っていました。私はNginx上でそれが存在しないことを知っています.htaccessファイルので、/ etc/nginx/sites-available/defaultの仮想ホストファイルを編集する必要がありますが、私は古いApacheルールに相当するNginxを知っていません。すべての要求は、これらは私のプロジェクトである(PHPスクリプト、静的ファイル、もしくは、存在しないファイルをしている場合は、どんなにをindex.phpに書き直されたApacheの上これによりNginxのPHPスクリプトへのすべてのリクエストを書き直してください

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !/index\.php 
RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteRule ^([^?]*)$ /index.php [QSA,NS,L] 

: はここに私の古い.htaccessファイルの内容です/ :: API /や/ :: ADMIN /とroot shorcut /〜/などのバーチャルパスもありますが、どうすればNginxでそれを行うことができますか?

答えて

1

nginxのドキュメントが書き換えディレクティブをレイアウト:

location/{ 
    rewrite ^(.*)$ /index.php?$1 last; 
} 

編集$ 1ビットを追加する:?をhttp://nginx.org/en/docs/http/ngx_http_rewrite_module.html

簡単な答えは、このようなものです。おかげで、@のbob0t

+0

あなたはQSAフラグを忘れてしまった:これはより多くのような何かを与える '/ index.phpを$ query_string' – Bobot

+0

私は私のファイルでこれを持っている: 'サーバー{ 場所/ { \t \t書き換え^(。 *)$ /index.php$query_string last; \t} \t \t場所〜\ .php $ { try_files $ uri = 404; fastcgi_split_path_info ^(。+ \。php)(/.+)$; fastcgi_pass unix:/var/run/php7.0-fpm.sock; fastcgi_index index.php; にはfastcgi_paramsが含まれます。 \t} } しかし、私は502:悪いゲートウェイは、PHPスクリプトと仮想パス(存在しないファイル)で404が、私は間違って何か? – RyanJ

+0

私の編集をチェックしてください。 Bob0tは、結果がどうなるかを言っていました。変更する必要はありません。 – Chazzu

関連する問題