最近、thinkphp を使用して小さなものを作成し、それを nginx サーバーにデプロイした後、nginx が pathinfo をサポートしていないことがわかりました。他の人の解決策をオンラインで検索しました。
1. thinkphp を変更して nginx で実行できるようにします
2. nginx を変更して pathinfo をサポートする
インターネット上では、nginx で pathinfo を開くことには一定のリスクがあると言われています。そのため、個人的には、この方法は 2 番目の方法よりも簡単だと思います。 🎜>
nginx の書き換えを変更
場所 /<p style="padding-top: 0.5em; padding-bottom: 0.5em; border: 0px none;">{<code style="padding: 3px; margin: 0px 0px 20px; border-width: 1px; border-style: solid; border-color: #e1e1e1 #f0f0f0 #f0f0f0 #e1e1e1; direction: ltr; font-size: 11px; font-family: 'andale mono', 'lucida console', monospace; display: block; color: #666666;">location /<br style="padding: 0px; margin: 0px; border: 0px none;">{<br style="padding: 0px; margin: 0px; border: 0px none;">index index.php;<br style="padding: 0px; margin: 0px; border: 0px none;">if (!-e $request_filename)<br style="padding: 0px; margin: 0px; border: 0px none;">{<br style="padding: 0px; margin: 0px; border: 0px none;">rewrite ^/(.*)$ /index.php/ last;<br style="padding: 0px; margin: 0px; border: 0px none;">break;<br style="padding: 0px; margin: 0px; border: 0px none;">}<br style="padding: 0px; margin: 0px; border: 0px none;">}
index.php;if (! -e $request_filename){
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}
location ~ .php($|/)
{
set $script $uri;
set $path_info “/”;
if ($uri ~ “^(. .php )(/. )")
{
set $script $1;
set $path_info $2;
}
fastcgi_pass unix:/tmp/php-cgi.sock;
# fastcgi_pass 127.0.0.1:9000;include fastcgi.conf;
fastcgi_indexindex.php?IF_REWRITE=1;
fastcgi_param PATH_INFO $path_info;fastcgi_param SCRIPT_FILENAME $document_root/$script;'URL_MODEL'=>2,
fastcgi_param SCRIPT_NAME $script;
次に、プロジェクト設定で URL モードを 2 に変更します
プロジェクトをデプロイする際に複数のプロジェクトがある場合、そのディレクトリにプロジェクトをデプロイする必要があります。例えば、バックグラウンドプロジェクトがAdminディレクトリに配置されている場合は、nginxの書き換えに別のプロジェクトを記述します。 ?
location?/XXX/?{<br style="padding: 0px; margin: 0px; border: 0px none;">if?(!-e?$request_filename)?{<br style="padding: 0px; margin: 0px; border: 0px none;">rewrite??^/XXX/(.*)$??/XXX/index.php?s=??last;<br style="padding: 0px; margin: 0px; border: 0px none;">break;<br style="padding: 0px; margin: 0px; border: 0px none;">}<br style="padding: 0px; margin: 0px; border: 0px none;">}