Mis*_*lin 5 php rewrite nginx directory
我有一个子域,我想在其中保留我正在处理的项目,以便向客户展示这些项目。
这是来自 /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;
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在子文件夹中放置不同的 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
Run Code Online (Sandbox Code Playgroud)
如果我去掉“ location /example3.com/ ”规则,那么一切正常,但没有preety URL。请帮忙。
配置基于这篇文章:https : //stackoverflow.com/questions/2119736/cakephp-in-a-subdirectory-using-nginx-rewrite-rules
我将 Ubuntu 9.10 和 nginx/0.7.62 与 php-fpm 一起使用。
Gui*_*ion 10
您不能在重写的第二部分中转义句点 (.):
rewrite ^/example3\.com/(.*)$ /example3\.com/index.php?id=$1 last;
Run Code Online (Sandbox Code Playgroud)
应该
rewrite ^/example3\.com/(.*)$ /example3.com/index.php?id=$1 last;
Run Code Online (Sandbox Code Playgroud)
但是你的id是什么样子的?如果是数字,你可以试试这个:
location /example3.com/ {
index index.php;
rewrite "^/example3\.com/([0-9]+)$" /example3.com/index.php?id=$1 break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11511 次 |
| 最近记录: |