これらのプロジェクトをクライアントに表示するために、現在取り組んでいるプロジェクトを保持したいサブドメインがあります。
/ etc/nginx/sites-available/projectsの構成ファイルは次のとおりです。
server {
listen 80;
server_name projects.example.com;
access_log /var/log/nginx/projects.example.com.access.log;
error_log /var/log/nginx/projects.example.com.error.log;
location / {
root /var/www/projects;
index index.html index.htm index.php;
}
location /example2.com {
root /var/www/projects;
auth_basic "Stealth mode";
auth_basic_user_file /var/www/projects/example2.com/htpasswd;
}
location /example3.com/ {
index index.php;
if (-f $request_filename) {
break;
}
if (!-f $request_filename) {
rewrite ^/example3\.com/(.*)$ /example3\.com/index.php?id=$1 last;
break;
}
}
location ~ \.php {
root /var/www/mprojects;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
さまざまなphpエンジン(wordpress、getsimpleなど)をサブフォルダーに配置できるようにしたい。これらのエンジンには異なるクエリパラメータ(id、q、urlなど)があるため、preety URLを機能させるには、書き直さなければなりません。ただし、上記は機能しません。これは私が得る応答です:
Warning: Unknown: Filename cannot be empty in Unknown on line 0
Fatal error: Unknown: Failed opening required '' (include_path='.:/usr/local/lib/php') in Unknown on line 0
「location /example3.com/」ルールを削除すると、すべてが機能しますが、preetyURLはありません。助けてください。
設定はこの投稿に基づいています: https://stackoverflow.com/questions/2119736/cakephp-in-a-subdirectory-using-nginx-rewrite-rules
私はUbuntu 9.10とnginx/0.7.62をphp-fpmで使用しています。
書き換えの2番目の部分でピリオド(。)をエスケープしてはなりません。
rewrite ^/example3\.com/(.*)$ /example3\.com/index.php?id=$1 last;
する必要があります
rewrite ^/example3\.com/(.*)$ /example3.com/index.php?id=$1 last;
しかし、あなたのidはどのように見えますか?数値の場合、これを試してみることができます。
location /example3.com/ {
index index.php;
rewrite "^/example3\.com/([0-9]+)$" /example3.com/index.php?id=$1 break;
}