我在与Nginx相同的服务器中使用Joomla / MariaDB和另一个CMS / PostgreSQL作为Web服务器。 joomla的重写规则也适用,但不适用于另一个。 PostgreSQL CMS的URL结构如下所示:
http://example.com/dir/Something.php?somename=Blah_Setup/Otherstring.php
http://example.com/dir/Something.php?somename=Blah_Setup/Otherstring.php&new_blah=true
http://example.com/dir/Something.php?somename=Blah_Setup/Otherstring.php&include=General_Info&worker_id=new
这就是我所拥有的:
location /sis/ {
rewrite ^(/sis)/Modules.php?modname=(.*/)\..*$ $1/$2 last;
}
有人可以指出我哪里出错吗?
答案 0 :(得分:0)
重写规则存在两个问题:
location /sis/
不处理以.php
结尾的URI,因此他们永远不会看到您的重写规则?
以后)不被视为重写模式的一部分您可以使用预定义变量modname
轻松提取$arg_modname
参数的值。
如果需要重写所有/sys/Modules.php
网址,则可以使用完全匹配位置轻松完成解决方案:
location = /sis/Modules.php {
rewrite ^ /sis/$arg_modname last;
}
如果只有那些$arg_modname
的URI需要重写,则需要将其包含在if ($arg_modname) { ... }
块中。但它确实增加了复杂性,因此如果不看到整个服务器配置,就很难提供一个简单的示例。