将htaccess转换为nginx重写

时间:2017-01-21 12:34:55

标签: apache .htaccess nginx

.htaccess到nginx重写转换帮助

RewriteEngine On
RewriteBase /

RewriteRule ^c-(.*)$ catpost.php?id=$1 [L]
RewriteRule ^a-(.*)-(.*)$ archives.php?month=$1&year=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.*)$ viewpost.php?id=$1 [QSA,L]

1 个答案:

答案 0 :(得分:2)

假设您有一个有效的PHP实现,请尝试:

location / {
    rewrite ^/c-(.*)$ /catpost.php?id=$1 last;
    rewrite ^/a-(.*)-(.*)$ /archives.php?month=$1&year=$2 last;

    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^/(.*)$ /viewpost.php?id=$1 last;
}

要记住的主要事项是nginx URI以前导/开头。

前两个重写可能位于location块内 - 取决于您拥有的其他location块。有关详细信息,请参阅this document

条件重写基本上是try_files的目的。我们使用命名位置丢失前导/。有关详细信息,请参阅this document