2017-06-12 81 views
1

中有url的一部分所以,我的目錄結構是這樣的;Nginx重寫。 PHP GET參數在子目錄

的index.php

location/{ 
     rewrite ^(.*)$ /index.php?params=$1 last; 
    } 

公共/資產/

location /public/assets { 
     rewrite ^(.*)$ /public/assets/index.php?params=$1 last; 
    } 

所以,我需要2次重寫這個項目,一個是一切希望的資產和一個資產。但使用Nginx時會出現問題。當使用Nginx的重寫公共/資產 PHP $ _GET PARAMS是以下幾點:

Array 
(
    [params] => /public/assets/css/syles.css 
) 
Array 
(
    [0] => 
    [1] => public 
    [2] => assets 
    [3] => css 
    [4] => syles.css 
) 

而這些都是錯誤的。我不希望url傳遞給GET。因爲在使用Apache時我得到如下結果。使用Apache時,代碼正常工作。

Array 
(
    [params] => css/styles.css 
) 
Array 
(
    [0] => css 
    [1] => styles.css 
) 

那麼,如何從Nginx配置文件中刪除這些「額外」的參數?或者如果Web服務器是Nginx,我需要使用PHP去除這個額外的參數嗎?我不希望這個解決方案甚至被提議爲解決方案。

所以,我想要得到與Nginx相同的參數,我用Aoache得到的是乾淨的。


僅供參考使用Apache我有下面的公共/資產下的.htaccess。

RewriteEngine on 
RewriteCond %{REQUEST_URI} !/index.php 
RewriteRule ^(.*)$ index.php/?params=$1 [NC] #L 

回答

2

改寫之前的路徑包含/public/assets/,所以從什麼傳遞給params排除它的最簡單方法是硬編碼的正則表達式,只提取你想要什麼,使用類似:

location /public/assets { 
     rewrite ^/public/assets/(.*)$ /public/assets/index.php?params=$1 last; 
    }