将htaccess转换为nginx重写

.htaccessnginx重写转换帮助

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] 

假设你有一个可行的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块。 详情请参阅此文件 。

条件重写基本上是try_files设计的目的。 我们使用一个命名的位置来丢失前导/ 。 详情请参阅此文件 。