Nginx重写。PHP GET参数在子目录中时包含url的一部分
我的目录结构是这样的 index.phpNginx重写。PHP GET参数在子目录中时包含url的一部分,php,apache,.htaccess,nginx,url-rewriting,Php,Apache,.htaccess,Nginx,Url Rewriting,我的目录结构是这样的 index.php location / { rewrite ^(.*)$ /index.php?params=$1 last; } 公共/资产/ location /public/assets { rewrite ^(.*)$ /public/assets/index.php?params=$1 last; } 所以,我确实需要为这个项目重写2次,一次用于除资产之外的所有内容,另一次用于资产。但当使用Nginx
location / {
rewrite ^(.*)$ /index.php?params=$1 last;
}
公共/资产/
location /public/assets {
rewrite ^(.*)$ /public/assets/index.php?params=$1 last;
}
所以,我确实需要为这个项目重写2次,一次用于除资产之外的所有内容,另一次用于资产。但当使用Nginx时,问题就来了。使用Nginx重写public/assetsPHP$\u时,GET参数如下:
Array
(
[params] => /public/assets/css/syles.css
)
Array
(
[0] =>
[1] => public
[2] => assets
[3] => css
[4] => syles.css
)
这些都是错误的。我不希望传递url以获取。因为当使用Apache时,我得到了以下结果。使用Apache时,代码正常工作
Array
(
[params] => css/styles.css
)
Array
(
[0] => css
[1] => styles.css
)
那么,如何使用Nginx config从url中删除这些“额外”参数呢?或者,如果webserver是Nginx,我是否需要使用PHP删除这些额外的参数?我甚至不希望这个解决方案被作为解决方案提出
所以,我希望使用Nginx获得与使用Aoache获得的相同的参数是干净的
仅供参考,在使用Apache时,我将以下.htaccess置于public/assets下
RewriteEngine on
RewriteCond %{REQUEST_URI} !/index.php
RewriteRule ^(.*)$ index.php/?params=$1 [NC] #L
重写之前的路径包含
/public/assets/
,因此从传递给params
的内容中排除该路径的最简单方法是在regexp中对其进行硬编码,并仅提取所需内容,方法如下:
location /public/assets {
rewrite ^/public/assets/(.*)$ /public/assets/index.php?params=$1 last;
}