# 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