# Rules > Decide what gets rendered and how, without touching your code: exclude, block, inject tags, force status codes and more. Source page: https://docs.jazui.com/panel/rules/en A rule has one or more **conditions** on the address or the bot, and an **action**. It can apply to all your sites or one (with its subdomains). How many rules you can have depends on the plan ([Plans and limits](https://docs.jazui.com/llms/en/plans.txt)). ## Conditions They compare, case-insensitively, against the full address unless stated otherwise: | Condition | Example | |---|---| | Equals, Not equal | `https://mysite.com/pricing` | | Contains, Doesn't contain | `/admin` | | Starts with, Doesn't start with | `https://mysite.com/blog` | | Ends with, Doesn't end with | `.pdf` | | Matches pattern (*) | `/blog/*` or `/*.pdf` (`*` = any text, `?` = one character). If it starts with `http` it's compared with the full URL; otherwise with the path and query. It must cover the whole text. | | Regular expression | `/(admin\|account)/` | | Has query parameter | `preview`, `page=2` or `filter_*` | | Bot is | `GPTBot`, `Googlebot`, `facebookexternalhit` (searched within the user agent) | With **Add condition** you add up to 9 more and choose whether **all (AND)** or **any (OR)** must match. ## Actions | Action | What it does | |---|---| | **Exclude** | The address isn't rendered (the integration serves your normal website). | | **Only include** | If a site has rules of this kind, only addresses matching one of them are rendered; the rest are excluded. | | **Cache days** | How many days until recache (0 to 365; 0 = never), above the site and account. | | **Render settings** | Maximum time, device and page-ready selector just for those addresses. | | **Ignore parameters** | Removes parameters from the address before looking it up and rendering it, so variants share one page: `sessionid, sort, filter_*`. | | **Remove elements** | CSS selectors, one per line (up to 20), removed from the HTML before saving: cookie banners, chats, pop-ups. | | **Inject into ** | `meta`, `link`, `title` or JSON-LD tags to add. They replace those the page already has with the same `name` or `property`, and its title or canonical. | | **Force status** | The bot gets 200, 301, 302, 404 or 410 instead of the page's code (with 301 or 302, «Redirect to»). Applied when rendering: recache the pages you already had. | | **Block** | The bot gets a `403`. Combine it with «Bot is» to block, for example, CCBot. | ## Order of evaluation 1. First the site's **Only include** rules: if there are any, the address must match at least one or it's excluded. 2. Then the rest, from **lowest to highest priority** (0 to 9999, 100 by default); with equal priority, in creation order. 3. **Exclude** and **Block** end the evaluation. **Ignore parameters** changes the address for the following rules. **Cache days**, **Render settings** and **Force status** keep the value of the first rule that sets them. **Remove elements** and **Inject** add up. 4. A rule with **Stop here** cuts off: the following ones don't apply. ## Templates and examples When creating a rule you can start from a template: - **Exclude /admin and /account**: pattern `/admin*` or `/account*`. - **Ignore sort and view parameters**: `sort, order, orderby, view`. - **Remove cookie banner**: `#onetrust-banner-sdk`, `#CybotCookiebotDialog`, `#cookie-notice`, `.cc-window`, `.cookie-banner`. - **Block AI bots**: GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, anthropic-ai, CCBot, PerplexityBot, Bytespider, Amazonbot and meta-externalagent. An **Inject into ** example for a product page (condition «Matches pattern» `/products/trail-shoe`): `Inject into `: ```html Zapatillas de trail | Mi tienda ``` ## Testing an address With **Test URL** (also inside the form) you apply your rules to an address, with an optional bot agent, without saving anything: you'll see whether it's **rendered**, **excluded** or **blocked**, the address it's cached under, the status, days, wait, device, selector, what's removed and injected, and each rule marked «Applies», «Doesn't match» or «Not evaluated». The rule you're editing is tested even if unsaved.