如何为Nginx创建SEO网址

时间:2015-09-14 14:11:54

标签: .htaccess nginx rewrite

我在将以下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可以处理吗?

1 个答案:

答案 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;