diff --git a/scripts/ci/extends/rules.yml b/scripts/ci/extends/rules.yml
index 3ef28e74fdc039671e570269ff80db336db653c4..cce6691058d02a43c8d142bae697abde8e9efaa9 100644
--- a/scripts/ci/extends/rules.yml
+++ b/scripts/ci/extends/rules.yml
@@ -8,3 +8,7 @@
   rules:
     - when: manual
       allow_failure: true
+
+.rules-master:
+  rules:
+    - if: '$CI_COMMIT_BRANCH == "master"'
diff --git a/scripts/ci/jobs/web.yml b/scripts/ci/jobs/web.yml
index ad2c316c65883e86576241254546070eab0c4fb7..17c5a80159152439bac385d4f9abaef49b908432 100644
--- a/scripts/ci/jobs/web.yml
+++ b/scripts/ci/jobs/web.yml
@@ -4,7 +4,7 @@ web url checker:
   tags:
     - docker
   extends:
-    - .rules-master-manual
+    - .rules-manual
   needs: []
   image:
     name: $WEB_IMAGE
@@ -28,9 +28,9 @@ preview web site:
     - yarn
     - hugo --environment staging
   rules:
-    - if: '$CI_COMMIT_BRANCH != "master"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
-      - web/
+      - web/**/*
       - scripts/ci/jobs/web.yml
   artifacts:
     expose_as: 'Web Preview'
@@ -45,18 +45,18 @@ preview web site:
 deploy web site:
   stage: package
   image: $WEB_IMAGE
-  needs: ["web url checker"]
+  needs: []
+  rules:
+    - if: '$CI_COMMIT_BRANCH == "master"'
+      changes:
+        - web/**/*
+        - scripts/ci/jobs/web.yml
   script:
     - cd web
     - yarn
     - hugo
     - netlify deploy --prod --dir=public
     - node_modules/.bin/hugo-algolia --toml -s
-  rules:
-    - if: '$CI_COMMIT_BRANCH == "master"'
-      changes:
-      - web/
-      - scripts/ci/jobs/web.yml
   cache:
     paths:
       - web/node_modules