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]

解决方法:

假设您有一个有效的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.

上一篇:整个网站的永久URL查询字符串?


下一篇:在网址中删除.php扩展名