Nginx重写规则,用于将html文件重写为php无法正常工作

时间:2013-12-20 02:41:31

标签: php .htaccess http nginx rewrite

我正在尝试将所有HTML文件重写为nginx中的PHP文件。所以我在我的nginx conf文件中输入了以下规则。

location ~ \.html$
{      rewrite (.*).html$ /$1.php;
}

但它不起作用,所以我尝试将重写规则放在两个位置,但即使这样也行不通。

location / {
  rewrite (.*).html$ /$1.php;
  rewrite admin/$ /admin/index.php;
  rewrite ([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ /productlist.php?cat=$1&subcat=$2;
  rewrite ([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /productlist.php?cat=$1&subcat=$2&brand=$3;
  rewrite ([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([0-9]+)/buy/$ /productdetails.php?cat=$1&subcat=$2&product=$3&id=$4;
  rewrite ([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([0-9]+)/buy$ /productdetails.php?cat=$1&subcat=$2&product=$3&id=$4;
  rewrite admin/internalattacment/(.*) /download.php/$1;
  rewrite admin/report_bug/(.*) /download.php/$1;
}

但是当我把这样的重写规则放到nginx

location ~ .*.()$ {
  rewrite (.*).html$ /$1.php;
}

有人可以告诉我为什么不会从前两个位置选择重写规则吗?

1 个答案:

答案 0 :(得分:0)

我认为您的错误位于该位置。

location ~ \.html$

仅匹配“.html”,而不是“anything.html” 试试

location ~ /(.*).html$