Joomla 去掉index.php Nginx伪静态规则 URL重写(rewriting) (已测)

文章类型:技术笔记    发表2019-03-29   文章编辑:怒熊网络 · 一站式互联网+技术服务商!   阅读:771

Joomla是一套全球知名的内容管理系统,Joomla是使用PHP语言加上MySQL数据库所开发的软件系统。
最近小编在使用Joomla开发做一个官网时,要用到程序URL重写(rewriting) Nginx伪静态规则,去掉讨厌的index.php,在国外论坛找了好久终于找到一个可用的规则,现贴出来给需要的站长使用。

if ( $args ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3d)" ) {
 set $args "";
 rewrite ^.*$ http://$host/index.php last;
 return 403;}
 
 if ( $args ~ "base64_encode.*\(.*\)") {
 set $args "";
 rewrite ^.*$ http://$host/index.php last;
 return 403;}
 
 if ( $args ~ "(\|%3E)") {
 set $args "";
 rewrite ^.*$ http://$host/index.php last;
 return 403;}
 
 if ( $args ~ "GLOBALS(=|\[|\%[0-9A-Z]{0,2})") {
 set $args "";
 rewrite ^.*$ http://$host/index.php last;
 return 403;}
 
 if ( $args ~ "_REQUEST(=|\[|\%[0-9A-Z]{0,2})") {
 set $args "";
 rewrite ^.*$ http://$host/index.php last;
 return 403;}
 
 if (!-e $request_filename) {
 
 rewrite (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ /index.php last;
 break;
 }

如果上面的规则不能用,可能是你虚拟主机的问题,可以使用下面的:

if ( $args ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3d)" ) {set $args "";rewrite ^.*$ http://$host/index.php last;return 403;}
if ( $args ~ "base64_encode.*\(.*\)") {set $args "";rewrite ^.*$ http://$host/index.php last;return 403;}
if ( $args ~ "(\|%3E)") {set $args "";rewrite ^.*$ http://$host/index.php last;return 403;}
if ( $args ~ "GLOBALS(=|\[|\%[0-9A-Z]{0,2})") {set $args "";rewrite ^.*$ http://$host/index.php last;return 403;}
if ( $args ~ "_REQUEST(=|\[|\%[0-9A-Z]{0,2})") { set $args ""; rewrite ^.*$ http://$host/index.php last; return 403;}
if (!-e $request_filename) { rewrite (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ /index.php last; break; }
如果上面的joomle的nginx rewrite伪静态规则出现图片/附件不法上传用下面这个
 location / {
    try_files $uri $uri/ /index.php?q=$request_uri;
  }

如果上面的joomle的nginx rewrite伪静态规则地址是中文用下面这个
 if (!-e $request_filename) {
 rewrite (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ /index.php last;
 break;
 }