好吧,一个示例url
http://www.mysite.com/?p=account&view=settings
普里是一个常数。 所有的url都有。
该view是许多可选的uri之一。
我试图了解URL重写和正则expression式,但我只是没有得到它。 我需要回到编写代码,但不幸的是,我只是不断回到nginx.conf ,以获得更多的惩罚。
我的目标是重写url为:
http://www.mysite.com/account/view/settings
我会告诉你我尝试过的东西,但是它只是复制和粘贴了很多以前的例子,certificate了我正在掌握正则expression式和URL重写的概念。
如果有人可以花几分钟来解释正则expression式部分,或者链接到一个很好的教程了解它,我将不胜感激。
不,我不指望你为我做这个工作,但是我虚心地请求一点帮助,把握重写的概念以及在nginx conf中使用的variables。 我可以看到一个叫做$uri ,但是不知道它是什么意思。 我还需要添加一个正则expression式来拒绝在/socket和/private的PHP脚本的直接访问,但允许通过Ajax的访问。 我敢肯定,我可以将任何有关正则expression式的知识应用于这个任务。
我的nginx conf的位置块
location ~ \.(hh|php)$ { fastcgi_keep_conn on; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~* .(png|gif|ico|css|js)$ { expires 365d; } location ~ .(aspx|jsp|cgi)$ { return 410; } location /socket { return 405; } location /private { return 405; } location / { # include /etc/nginx/naxsi.rules; index index.php; try_files $uri $uri/ /index.php?q=$uri?; limit_req zone=one burst=5; } location /Denied { return 418; } error_page 500 /error.php?type=500; error_page 501 /error.php?type=501; error_page 502 /error.php?type=502; error_page 503 /error.php?type=503; error_page 400 /error.php?type=400; error_page 401 /error.php?type=401; error_page 403 /error.php?type=403; error_page 404 /error.php?type=404; error_page 405 /error.php?type=405; error_page 406 /error.php?type=406; error_page 413 /error.php?type=413; error_page 414 /error.php?type=414; error_page 418 /error.php?type=418;
你需要
location /yourlocations { if ($args ~* "p=[az]*&view=[az]*") { rewrite ^ http://yourwebsite.com/$arg_p/$arg_view? last; } }
另外,如果你想捕捉“视图”,你应该使该视图的程序是一个参数,如yourwebsite.com/?p=test&second=test2&third=test3,所以你可以有以下的事情:
location /yourlocations { if ($args ~* "p=[az]*&second=[az]*&third=[az]*") { rewrite ^ http://yourwebsite.com/$arg_p/$arg_second/$arg_third? last; } }