2015-09-14 45 views
0

我在将下面的htaccess规则转换为nginx时遇到了问题。我的网站是用PHP编写的。如何为Nginx创建SEO网址

RewriteEngine叙述在

重写规则^。?([A-ZA-Z0-9 - /] +)的html $ fullstory.php URL = $ 1

重写规则^([A-ZA-Z0- 9 - /] +),HTML/$ fullstory.php URL = $ 1

我试图做的是转换这个URL http://example.com/blog/fullstory.php?url=african-vegetable-recipe.htmlhttp://example.com/blog/african-vegetable-recipe.html

OR

获得“非洲vegetable-? RECI从example.com/blog/african-vegetable-recipe.html获得“pe.html”并用作查询字符串。

nginx能处理这个吗?

回答

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的确切路径显然需要更改以匹配您自己的系统。

交替。作为查询字符串的一部分,将正则表达式的括号内的部分传递给PHP。在您的服务器{}块中使用此语句。

rewrite ^([a-zA-Z0-9-/]+).html /fullstory.php?url=$1; 
+0

我正在使用PHP。我想要做的是将此网址http://example.com/blog/fullstory.php?url=african-vegetable-recipe.html转换为http://example.com/blog/african-vegetable-recipe html的。 nginx能处理这个吗? – tokjohn

+0

我已经更新了与Apache配置相同的Nginx的原始答案。 –