@@ -42,10 +42,25 @@ public function findByUrl(string $siteHandle, string $url): ?Redirect
4242 ->where ('locale ' , $ siteHandle )
4343 ->where (function (RedirectQueryBuilder $ query ) use ($ url ) {
4444 $ query
45- ->orWhere ('source ' , $ url )
46- ->orWhere ('source ' , str ($ url )->start ('/ ' ))
47- ->orWhere ('source ' , str ($ url )->finish ('/ ' ))
48- ->orWhere ('source ' , str ($ url )->start ('/ ' )->finish ('/ ' ));
45+ ->orWhere (function (RedirectQueryBuilder $ query ) use ($ url ) {
46+ $ query ->where ('source_md5 ' , md5 ($ url ))
47+ ->where ('source ' , $ url );
48+ })
49+ ->orWhere (function (RedirectQueryBuilder $ query ) use ($ url ) {
50+ $ source = str ($ url )->start ('/ ' );
51+ $ query ->where ('source_md5 ' , md5 ($ source ))
52+ ->where ('source ' , $ source );
53+ })
54+ ->orWhere (function (RedirectQueryBuilder $ query ) use ($ url ) {
55+ $ source = str ($ url )->finish ('/ ' );
56+ $ query ->where ('source_md5 ' , md5 ($ source ))
57+ ->where ('source ' , $ source );
58+ })
59+ ->orWhere (function (RedirectQueryBuilder $ query ) use ($ url ) {
60+ $ source = str ($ url )->start ('/ ' )->finish ('/ ' );
61+ $ query ->where ('source_md5 ' , md5 ($ source ))
62+ ->where ('source ' , $ source );
63+ });
4964 })
5065 ->where ('matchType ' , MatchTypeEnum::EXACT )
5166 ->orderBy ('order ' )
@@ -86,6 +101,7 @@ public function save($redirect)
86101 if (! $ redirect ->id ()) {
87102 $ redirect ->id (StacheFacade::generateId ());
88103 }
104+ $ redirect ->source_md5 (md5 ($ redirect ->source ()));
89105
90106 StacheFacade::store ('redirects ' )->save ($ redirect );
91107
0 commit comments