将网址重定向到网址到www

时间:2018-12-13 09:26:33

标签: regex linux nginx redirect configuration

我在将URL重定向到Nginx中的url时遇到问题:

例如,我有一个链接:

https://example.com/oferty-specjalne/szczegoly-oferty?OfferID=124296

工作功能:

import Foundation
import UIKit

class PaginatedCardScrollView: UIScrollView {

    convenience init() {
        self.init(frame: CGRect.zero)
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
        _setup()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        _setup()
    }

    private func _setup() {
        isPagingEnabled = true
        isScrollEnabled = true
        clipsToBounds = false
        showsHorizontalScrollIndicator = false
    }

    override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
        // Asume the scrollview extends uses the entire width of the screen
        return point.y >= frame.origin.y && point.y <= frame.origin.y + frame.size.height
    }
}

不起作用的功能:

location  ^/oferty-specjalne/szczegoly-oferty(.*)$  {
return 301 https://example.com/oferty-specjalne/; }

我检查了测试仪中的正则表达式,一切正常。 我想要的信息是我在哪里犯了错误,以及如何解决它,或者例如。

1 个答案:

答案 0 :(得分:0)

07-Dec-18 01.00.54.9840000 PM 之后的URI部分是查询字符串(或参数),而不是?location指令使用的规范化URI的一部分-因此您的规则永远不会匹配。有关详细信息,请参见FORMAT() is nice and all, but…

如果您有复杂的正则表达式需要与整个URI(包括查询字符串)匹配,则需要使用rewrite变量。可以使用$request_uriif进行测试。拥有多个正则表达式的情况下,map是首选解决方案。

例如:

map

按顺序对正则表达式求值,直到找到匹配的规则为止,因此对规则进行排序的最具体的优先顺序和最不具体的最后顺序。 使用命名捕获,因为数字捕获可能会超出范围。 如果它们相同,则无需指定方案或域名。 map $request_uri $redirect { default 0; ~^/oferty-specjalne/szczegoly-oferty\?OfferID=(124170|124296|124299|123483|63788|97002)$ /oferty-specjalne/; ~^/oferty-specjalne/szczegoly-oferty\?OfferID=(?<offerid>.*)$ /oferty-specjalne/$offerid; ~^/oferty-specjalne/szczegoly-oferty\?OfferID=97002 /oferty-specjalne/; ~^/oferty-specjalne/szczegoly-oferty /oferty-specjalne/; } server { ... if ($redirect) { return 301 $redirect; } 指令位于`server块之外。 有关详细信息,请参见this document