我在将以下htaccess规则转换为nginx时遇到问题。我的网站是用PHP编写的。
RewriteEngine On
RewriteRule ^([a-zA-Z0-9 - /] +)。html $ fullstory.php?url = $ 1
RewriteRule ^([a-zA-Z0-9 - /] +)。html / $ fullstory.php?url = $ 1
我要做的是将此网址http://example.com/blog/fullstory.php?url=african-vegetable-recipe.html转换为http://example.com/blog/african-vegetable-recipe.html
OR
获取"非洲蔬菜配方"来自example.com/blog/african-vegetable-recipe.html并用作查询字符串。
nginx可以处理吗?
答案 0 :(得分:0)
您使用的是php-fpm吗?如果是这样,那么您不需要花时间重写网址。在Nginx中,您可以控制传递给PHP的参数。
以下Nginx位置块会将所有匹配的请求传递给fullstory.php,原始请求仍会出现在$ _SERVER ['REQUEST_URI']中,您可以在其中解析所需的任何信息,而无需更改重写规则将来。
location ~* ^([a-zA-Z0-9-/]+).html$ {
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT /var/www/html/;
fastcgi_param SCRIPT_FILENAME /var/www/html/fullstory.php;
fastcgi_pass php-fpm;
}
fullstory.php的确切路径显然需要更改以匹配您自己的系统。
可替换地。将regexp的括号部分作为查询字符串的一部分传递给PHP。在服务器{}块中使用此语句。
rewrite ^([a-zA-Z0-9-/]+).html /fullstory.php?url=$1;