我有一个自制的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
最重要的是第一条规则应该是工作,因为它更经常使用。
答案 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)
/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;
,最好将它们移动到服务器块而不是位置块,如果可能的话。