@@ -36,10 +36,25 @@ public function findByUrl(string $siteHandle, string $url): ?Redirect
3636 ->where ('site ' , $ siteHandle )
3737 ->where (function (RedirectQueryBuilder $ query ) use ($ url ) {
3838 $ query
39- ->orWhere ('source ' , $ url )
40- ->orWhere ('source ' , str ($ url )->start ('/ ' ))
41- ->orWhere ('source ' , str ($ url )->finish ('/ ' ))
42- ->orWhere ('source ' , str ($ url )->start ('/ ' )->finish ('/ ' ));
39+ ->orWhere (function (RedirectQueryBuilder $ query ) use ($ url ) {
40+ $ query ->where ('source_md5 ' , md5 ($ url ))
41+ ->where ('source ' , $ url );
42+ })
43+ ->orWhere (function (RedirectQueryBuilder $ query ) use ($ url ) {
44+ $ source = str ($ url )->start ('/ ' );
45+ $ query ->where ('source_md5 ' , md5 ($ source ))
46+ ->where ('source ' , $ source );
47+ })
48+ ->orWhere (function (RedirectQueryBuilder $ query ) use ($ url ) {
49+ $ source = str ($ url )->finish ('/ ' );
50+ $ query ->where ('source_md5 ' , md5 ($ source ))
51+ ->where ('source ' , $ source );
52+ })
53+ ->orWhere (function (RedirectQueryBuilder $ query ) use ($ url ) {
54+ $ source = str ($ url )->start ('/ ' )->finish ('/ ' );
55+ $ query ->where ('source_md5 ' , md5 ($ source ))
56+ ->where ('source ' , $ source );
57+ });
4358 })
4459 ->where ('match_type ' , MatchTypeEnum::EXACT )
4560 ->orderBy ('order ' )
@@ -104,6 +119,7 @@ public static function fromModel(Model $model)
104119 return (new Redirect )
105120 ->id ($ model ->id )
106121 ->source ($ model ->source )
122+ ->source_md5 (md5 ($ model ->source ))
107123 ->destination ($ model ->destination )
108124 ->type ($ model ->type )
109125 ->matchType ($ model ->match_type )
@@ -117,6 +133,7 @@ private function toModel(Redirect $redirect)
117133 {
118134 $ properties = [
119135 'source ' => $ redirect ->source (),
136+ 'source_md5 ' => md5 ($ redirect ->source ()),
120137 'destination ' => $ redirect ->destination (),
121138 'match_type ' => $ redirect ->matchType (),
122139 'type ' => $ redirect ->type (),
0 commit comments