2016-03-03 70 views
0

我正在用nginx進行一些測試。將重寫規則應用於來自apache vhost的nginx vhost

他工作正常,但我無法從apache和nginx應用一些重寫規則doc很不容易。

目標:所有內容都必須在/index.php文件中重寫,而不是額外的和adminer。

如果我瀏覽到http://server/extra/someThing,沒問題,調用controller.php文件。

但是對於/ adminer,我只是想阻止/ adminer被最後一條規則重寫。

location/{ 
    rewrite ^/extra /extra/controller.php break; 
    #rewrite ^/adminer - break; 
    rewrite ^/ /index.php break; 
} 

任何幫助將不勝感激:)

回答

0

你可以使用不同的地點塊分割你重寫邏輯。例如:

location/{ 
    try_files $uri $uri/ /index.php; 
} 
location /extra { 
    try_files $uri $uri/ /extra/controller.php; 
} 
location /adminer { 
    try_files $uri $uri/ =404; 
} 

中查看thisthis

+0

感謝但「位置/」不工作和PHP文件不執行,我需要將其更改爲「位置〜」,並在此之後,「位置/額外」和「位置/ adminer」使用/ index。 PHP文件。沒有〜沒有什麼作品。 – user3763667

+0

最後它完成了,可能不是最好的方式,但它的工作原理如下: location/adminer { \t try_files $ uri = 404; } location〜\ .php $ { \t return 403; } location〜{ \t rewrite ^/extra /extra/controller.php break; \t try_files $ uri $ uri//index.php; (。+ \。php)(/.+)$; \t fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; \t fastcgi_index index.php; \t fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; \t包括fastcgi_params; } 感謝您的幫助 – user3763667