.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]
解决方法:
假设您有一个有效的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以/开头.
前两次重写可能在位置块内,也可能不在位置块内,具体取决于您拥有的其他位置块.有关详细信息,请参见this document.
有条件的重写基本上是try_files设计要做的.我们使用命名位置来丢失前导/.有关详细信息,请参见this document.