Nginx
從 Apache 遷移到 NGINX - 配置更改
我正在嘗試將舊網站從 Apache 遷移到 Nginx,但我無法將 htaccess 文件重寫為 nginx 配置。
目前的htaccess:
<IfModule mod_rewrite.c> RewriteEngine on Options +FollowSymLinks RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/(.*) $1.php?rewrite=$2 [QSA] </IfModule>
我已經嘗試過這個 nginx 配置(已經嘗試了很多修改但沒有任何效果):
location ~ \.php(/|$) { #try_files $uri $uri/ $uri?rewrite=$args; # Not working try_files $uri $uri.php $uri?rewrite=index.php; # not working #try_files = $document_uri.php?rewrite=$args; # not working fastcgi_pass localhost:8003; }
我錯過了什麼?
這些“工作”都不起作用,因為您
location
在 .htaccess 中指定的正則表達式與您在 Apache 的 .htaccess 中指定的正則表達式不同,並且您沒有嘗試在 .htaccess 中使用它的匹配項try_files
。對於您發布的 .htaccess ,這樣的內容應該更合適:
location ~ ^(.*)/(.*) { try_files $uri $1.php?rewrite=$2&$args =404; }
這具有以下效果:首先嘗試靜態文件,然後嘗試匹配的 PHP 腳本,否則返回 404。
請注意,您不是
fastcgi_pass
在這裡,而是在另一個location
專門用於處理 PHP 文件。location ~ \.php$ { #...fastcgi config }
如果可能,您應該考慮重構應用程序以使用正確的前端控制器。這也將降低您的 nginx 配置的複雜性。