首頁  >  問答  >  主體

求助 把.htaccess規則轉換成 nginx規則

本規則是基於藍海豚導購程式的rewreite規則

本人想把如下.htaccess 規則 轉換成 nginx規則,求助...

<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [L]
</IfModule>
PHPzPHPz2712 天前849

全部回覆(3)我來回復

  • 怪我咯

    怪我咯2017-05-16 17:30:02

    更精確的提法是:如何把Apache的rewrite規則轉換成nginx的。 ——.htaccess只是手段不必多提,但涉及的模組是rewrite才必須強調,因為如果是別的模組可能nginx會無對應功能。

    兩種思路:

    1. 轉換器http://www.anilcetin.com/convert-apache-htaccess-to-nginx/
    2. 這個重寫規則非常像WordPress。你可以查“wordpress nginx rewrite”,並學習修改成你適用的。

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 17:30:02

    上面規則的意思如果URI對應的檔案或資料夾不存在就進行rewrite。 apache的%{REQUEST_FILENAME}在nginx與之對應的是$uri,所以你上面的規則可以用如下的try_files 來設定

    try_files    $uri $uri/  /index.php/$uri&$args;
    

    try_files的作用是依序檢查檔案是否存在,傳回第一個找到的檔案或資料夾(結尾加斜線表示為資料夾),如果所有的檔案或資料夾都找不到,會進行一個內部重定向到最後一個參數。

    $args 表示url中的參數。

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 17:30:02

    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 ^/(.*)$ /index.php/ last;
    }
    

    Apache重寫規則轉換為Nginx
    http://www.51ask.org/apache2n...

    回覆
    0
  • 取消回覆