nginx用自制的CMS重写好网址

时间:2013-05-11 19:59:37

标签: nginx seo rewrite

我有一个自制的CMS,服务于我继承的网站。虽然我可以设置微小的URL,但我并不熟悉nginx重写规则。以下是我配置的相关部分:

*location / {
        index index.php index.html;
        root /var/www/www.valami.hu;
        try_files $uri $uri/ @seo;
    }
location @seo {
rewrite ^/([a-z]+)$ /index.php?oldal=$1 last;
break;
}*

问题是该网站有一个位于blogspot.com上的博客,而博客中的内容则来自那里。所以我需要帮助的是这种URL的规则:

http://www.valami.hu/index.php?oldal=blog&options=2012/01/some-title-here.html

所以,它会很好:

http://www.valami.hu/blog/2012/01/some-title-here

最重要的是第一条规则应该是工作,因为它更经常使用。

2 个答案:

答案 0 :(得分:0)

这实际上是微不足道的。观察和学习!

 location / {
    try_files $uri $uri/ @site;
 }
 location @site {
    rewrite ^/blog/(.+)$ /index.php?oldal=blog&options=$1 last;
    rewrite ^(.+)$ /index.php?oldal=$1 last;
 }

订单完全不同。您也可以通过删除last标志并使用explicitely设置的选项查询字符串参数重定向到/blog来执行此操作。如果需要则不。

答案 1 :(得分:0)

好像我们只有2个案例,/blog和非/blog,我会写2个位置块

location ~ ^/blog/(.*) {
    try_files $uri /index.php?oldal=blog&options=$1;
}
location ~ /(.*) {
    try_files $uri /index.php?oldal=$1;
}

我会在第二个位置使用/$request_uri,但这会在/中加上olda1,如果这对你来说无关紧要的话我更喜欢这种方法,因为它不涉及正则表达式。

关于index index.php index.html;root /var/www/www.valami.hu;,最好将它们移动到服务器块而不是位置块,如果可能的话。