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
设计的目的。 我们使用一个命名的位置来丢失前导/
。 详情请参阅此文件 。