0

我有一个自制的 CMS,为我继承的网站提供服务。我不太熟悉 nginx 重写规则,尽管我可以设置微小的 URL。这是我配置的相关部分:

*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

最重要的是第一条规则应该是工作也因为它更频繁地使用。

4

2 回答 2

0

好吧,似乎我们只有 2 个案例,the/blog和 non /blog,我会写 2 个位置块

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

我会在第二个位置使用 just /and $request_uri,但这会放在前面/olda1如果这对你不重要,那么我更喜欢这种方法,因为它不涉及正则表达式。

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

于 2013-05-13T23:12:24.810 回答
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重定向到来做到这一点。/blog没有如果需要。

于 2013-05-11T20:06:30.490 回答