搜尋

首頁  >  問答  >  主體

rewrite - nginx偽靜態的問題

我的網站有兩種語言,中文 英文 如果用pathinfo訪問的話應該是這樣 中文: http://www.com/index.php/product/category/a1/ 英文: http://www.com/en.php/product/category/a2/ 程式如果開重寫模式的話應該是這樣 http://www.com/cn/product/category/a1/ http://www.com/en/product/category/a2/ 在apache中我已經實現了,規則如下

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^cn/(.*)$ index.php/ [L]
RewriteRule ^en/(.*)$ en.php/ [L]
</IfModule>

但是在nginx中我試兩種方法,如 方法1.

if (!-f $request_filename){
set $rule_0 1$rule_0;
}
if (!-d $request_filename){
set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
rewrite ^/cn/(.*)$ /index.php/ last;
}
rewrite ^/en/(.*)$ /en.php/ last;

方法2.

location /cn/ {
    if (!-e $request_filename){
        rewrite ^/cn/(.*)$ /index.php/ last;
    }
}

兩種方法都不能生效,求大神給個解決的方法呀

習慣沉默習慣沉默2744 天前605

全部回覆(1)我來回復

  • 大家讲道理

    大家讲道理2017-05-16 17:30:37

    方法2你只寫了一條?寫下面兩條應該是沒問題的。

    location /cn/ {
        if (!-e $request_filename){
            rewrite ^/cn/(.*)$ /index.php/ last;
        }
    }
    location /en/ {
        if (!-e $request_filename){
            rewrite ^/en/(.*)$ /en.php/ last;
        }
    }
    

    回覆
    0
  • 取消回覆