xxxx.conf
#vhost-xxxxx server { listen 80; server_name xxxx.xxxx.com; root /var/www/html; index index.php index.html index.htm; charset utf-8; access_log logs/xxxxxx.access.log; } #rewrite if (!-e $request_filename) { rewrite ^(.+)$ /cn/index.php?q=$1 last; } location ~ \.php$ { root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
你好,我的nginx指向/ var / www / html根目录下的/ var / www / html我有3个文件夹cn,my,en
所以对于那里的configuration,如果我继续到xxxxx.xxxxx.com/cn/这将是没有问题的。
但是当我处理到xxxxx.xxxxx.com/en或/我的它显示403禁止。
我做这些设置之前尝试
#rewrite if (!-e $request_filename) { rewrite ^(.+)$ /cn/index.php?q=$1 last; rewrite ^(.+)$ /en/index.php?q=$1 last; rewrite ^(.+)$ /my/index.php?q=$1 last; }
但只为cn它会起作用,其他将被禁止。
我怎么做,如果我的用户去/ en它会重写
rewrite ^(.+)$ /en/index.php?q=$1 last;
或者我的用户去/我将重写
rewrite ^(.+)$ /my/index.php?q=$1 last;
我怎么能使它具体
ps://我的域名一路都是一样的。
谢谢你,谢谢你的帮助
三个重写规则具有相同的正则expression式,所以只有第一个会被执行。 我build议你使用location和try_files指令而不是if和rewrite 。
server { listen 80; server_name example.com; charset utf-8; access_log logs/xxxxxx.access.log; root /var/www/html; index index.php; location = / { return 301 /cn/; } location / { try_files $uri $uri/ /cn/index.php?q=$uri; } location /en { try_files $uri $uri/ /en/index.php?q=$uri; } location /my { try_files $uri $uri/ /my/index.php?q=$uri; } location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
注意:我已经删除并重新sorting了PHP位置块中的一些指令。
如果你想将上面的代码合并成一个正则expression式(这可能效率较低但可扩展):
server { listen 80; server_name example.com; charset utf-8; access_log logs/xxxxxx.access.log; root /var/www/html; index index.php; location = / { return 301 /cn/; } location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ "^(?<lang>/\w{2})/" { try_files $uri $uri/ $lang/index.php?q=$uri; } }
看到这个 nginx指令及其文档的列表。
编辑:添加index指令两个例子, location =第一个例子,并$uri/到每个try_files在这两个例子。 添加try_files到PHP位置以获得完整性。