tulis semula - masalah pseudo-statik nginx
習慣沉默
習慣沉默 2017-05-16 17:28:37
0
1
626

Tapak web saya mempunyai dua bahasa, Cina + Inggeris Jika diakses menggunakan pathinfo, ia sepatutnya seperti ini Cina: http://www.com/index.php/product/category/a1/ Bahasa Inggeris: http://www.com/en.php/product/category/a2/ Jika program menghidupkan mod tulis semula, ia sepatutnya kelihatan seperti ini http://www.com/cn/product/category/a1/ http://www.com/ms/product/category/a2/ Saya telah melaksanakannya dalam apache, peraturannya adalah seperti berikut

<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>

Tetapi dalam nginx saya mencuba dua kaedah, seperti Kaedah 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;

Kaedah 2.

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

Kedua-dua kaedah tidak berkesan, tolong beri saya penyelesaian

習慣沉默
習慣沉默

membalas semua(1)
大家讲道理

Kaedah 2: Anda hanya menulis satu? Seharusnya tiada masalah untuk menulis dua perkara berikut.

location /cn/ {
    if (!-e $request_filename){
        rewrite ^/cn/(.*)$ /index.php/ last;
    }
}
location /en/ {
    if (!-e $request_filename){
        rewrite ^/en/(.*)$ /en.php/ last;
    }
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan