nginx rewrite目录对换
/123/xxx----->xxx?id=123
[root@web01 default]# pwd /app/www/default [root@web01 default]# tree 123 123 └── sss └── index.html 1 directory, 1 file [root@web01 default]# cat 123/sss/index.html cheshi [root@web01 default]# cat /app/server/nginx/conf/rewrite/default.conf #rewrite ^/index\.html /index.php last; #if (!-e $request_filename) rewrite ^/(.*)$ index.php last; #if (!-e $request_filename) {rewrite ^/(.*)$ /index.php last;} #if (!-e $request_filename) {return 404;} #if ($http_user_agent ~ Firefox) {rewrite ^(.*)?$ /nginx-Firefox/$1 break;} #if ($http_user_agent ~ MSIE) {rewrite ^(.*)$ /nginx-MSIE/$1 break;} rewrite ^/(\d+)/(.+)/ /$2?id=$1 last; #在这里我犯了个要命的错误,这里匹配的是真实的URI,而我却认为是区配的URL,所以一直没能实现!!!
#后来,我发现,还有一个大的“我不知道!!!(要真正明白什么是目录对换)
[root@web01 default]# ls 123 sss http://192.168.1.24/sss/?id=123 #根下的sss才是真正的请求的目录!!!!
[root@web01 default]# echo "根下的sss才是请求的真正的目录" > /app/www/default/sss/index.html
[root@web01 default]# curl http://192.168.1.24/sss/?id=123
根下的sss才是请求的真正的目录
最后得出只留网站根目录下的 sss即/app/www/default/sss/index.html
[root@web01 default]# tree /app/www/default/ /app/www/default/ └── sss └── index.html 1 directory, 1 file
[root@web01 default]# cat /app/server/nginx/conf/rewrite/default.conf #rewrite ^/index\.html /index.php last; #if (!-e $request_filename) rewrite ^/(.*)$ index.php last; #if (!-e $request_filename) {rewrite ^/(.*)$ /index.php last;} #if (!-e $request_filename) {return 404;} #if ($http_user_agent ~ Firefox) {rewrite ^(.*)?$ /nginx-Firefox/$1 break;} #if ($http_user_agent ~ MSIE) {rewrite ^(.*)$ /nginx-MSIE/$1 break;} rewrite ^/(\d+)/(.+)/ /$2?id=$1 last; #location ~ ^/(cron|templates)/ {deny all;break;} #location ~ ^/data {deny all;} #location ^~ /html/m.js {access_log off;root /app/www;expires 5;break;} #rewrite ^/ck-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /ck/$1/$2/$3.html last; #rewrite ^/([0-9a-z]+)espressos/(.*)$ /web01/$1/$2 permanent; #rewrite ^/([0-9a-z]+)espressos/(.*)$ /web01/$1/$2 last; #location /i/ {alias /data/w3/bass/;} [root@web01 default]# curl http://192.168.1.24/sss/?id=123 根下的sss才是请求的真正的目录
如果/app/www/sss/index.html 改为别的名子如k.html请求会失败(这个规则到底是有什么意义????)
联系方式QQ:326528263 EMAIL:clnking@163.com 网名:bass 分享技术 突破难点 创新思维