# 404-solution/trunk/includes/html/engineProfilesSection.html

404 Solution, version trunk. 104 lines.

- Page: https://pluginprobe.com/plugins/404-solution/trunk/code/includes/html/engineProfilesSection.html
- Raw: https://pluginprobe.com/plugins/404-solution/trunk/raw/includes/html/engineProfilesSection.html
- Modified: 2026-06-23T05:55:18+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/404-solution/trunk/code/includes/html/engineProfilesSection.html#L10-L20`.

```html
<div id="abj404-engine-profiles-section">

<p>{By default, when a visitor hits a 404 URL, all suggestion methods run: slug matching, spelling correction, title matching, content search, category/tag matching, URL fixing, and archive fallback. Engine Profiles let you override this for specific sections of your site — choose exactly which methods run when a 404 URL falls within a URL pattern you define.}</p>

<p><strong>{Example 1:}</strong> {Your store lives at /products/. Spelling correction works great on blog posts, but on a product section you want only exact slug matching and URL fixing — fuzzy spelling suggestions might point to the wrong product. Create a profile with the URL pattern /products/* and check only "Slug Matching" and "URL Fix".}</p>

<p><strong>{Example 2:}</strong> {You have a documentation archive at /docs/ that you recently restructured. The content is too technical for spelling suggestions to be useful, so you enable only the Archive Fallback engine there.}</p>

<p><strong>{How profiles are applied:}</strong></p>
<ul style="list-style: disc; margin-left: 1.5em;">
    <li>{Each profile has a URL pattern (e.g. /products/*) that is tested against the incoming 404 URL.}</li>
    <li>{Profiles are checked in priority order — lower number means checked first.}</li>
    <li>{The first profile whose URL pattern matches the 404 URL wins. Only the engines you selected in that profile will run.}</li>
    <li>{If none of your profiles match the 404 URL, the default behavior applies: all engines run.}</li>
</ul>

<p>{Most sites do not need Engine Profiles. They are for advanced scenarios where one section of your site needs different suggestion logic than the rest.}</p>

<div id="abj404-engine-profiles-list-wrap">
    <table id="abj404-engine-profiles-table" class="widefat striped" style="margin-bottom: 12px;">
        <thead>
            <tr>
                <th>{Name}</th>
                <th>{URL Pattern}</th>
                <th>{Regex}</th>
                <th>{Engines}</th>
                <th>{Priority}</th>
                <th>{Active}</th>
                <th>{Actions}</th>
            </tr>
        </thead>
        <tbody id="abj404-engine-profiles-tbody">
            <tr id="abj404-engine-profiles-empty-row">
                <td colspan="7">{No engine profiles defined.}</td>
            </tr>
        </tbody>
    </table>
</div>

<button type="button" id="abj404-add-engine-profile-btn" class="button button-primary">
    {Add Engine Profile}
</button>

<div id="abj404-engine-profile-form-wrap" style="display:none; margin-top: 12px; padding: 12px; border: 1px solid var(--abj404-border); background: var(--abj404-surface-muted);">
    <h4 id="abj404-engine-profile-form-title">{Add Engine Profile}</h4>

    <input type="hidden" id="abj404-profile-id" value="0">

    <table class="form-table">
        <tr>
            <th scope="row"><label for="abj404-profile-name">{Name}:</label></th>
            <td><input type="text" id="abj404-profile-name" class="regular-text" placeholder="{e.g. Products section}"></td>
        </tr>
        <tr>
            <th scope="row"><label for="abj404-profile-pattern">{URL Pattern}:</label></th>
            <td>
                <input type="text" id="abj404-profile-pattern" class="regular-text" placeholder="{e.g. /products/* or ^/products/}">
                <p class="description">{Use * as wildcard for simple patterns. Check &quot;Regex&quot; for full regex patterns.}</p>
            </td>
        </tr>
        <tr>
            <th scope="row"><label for="abj404-profile-is-regex">{Regex}:</label></th>
            <td>
                <input type="checkbox" id="abj404-profile-is-regex" value="1">
                <label for="abj404-profile-is-regex">{Pattern is a regular expression}</label>
            </td>
        </tr>
        <tr>
            <th scope="row">{Enabled Engines}:</th>
            <td id="abj404-profile-engines-checkboxes">
                <p class="description">{Select which engines should run for URLs matching this profile. Leave all unchecked to run all engines.}</p>
                <label><input type="checkbox" class="abj404-engine-cb" value="ABJ_404_Solution_SlugMatchingEngine"> {Slug Matching}</label><br>
                <label><input type="checkbox" class="abj404-engine-cb" value="ABJ_404_Solution_SpellingMatchingEngine"> {Spelling Matching}</label><br>
                <label><input type="checkbox" class="abj404-engine-cb" value="ABJ_404_Solution_TitleMatchingEngine"> {Title Matching}</label><br>
                <label><input type="checkbox" class="abj404-engine-cb" value="ABJ_404_Solution_ContentMatchingEngine"> {Content Matching}</label><br>
                <label><input type="checkbox" class="abj404-engine-cb" value="ABJ_404_Solution_CategoryTagMatchingEngine"> {Category/Tag Matching}</label><br>
                <label><input type="checkbox" class="abj404-engine-cb" value="ABJ_404_Solution_UrlFixEngine"> {URL Fix}</label><br>
                <label><input type="checkbox" class="abj404-engine-cb" value="ABJ_404_Solution_ArchiveFallbackEngine"> {Archive Fallback}</label><br>
                <label><input type="checkbox" class="abj404-engine-cb" value="ABJ_404_Solution_WordPressUrlGuessEngine"> {WordPress URL Guess Fallback}</label>
            </td>
        </tr>
        <tr>
            <th scope="row"><label for="abj404-profile-priority">{Priority}:</label></th>
            <td>
                <input type="number" id="abj404-profile-priority" value="0" min="0" max="9999" style="width: 70px;">
                <p class="description">{Lower number = higher priority. First matching profile wins.}</p>
            </td>
        </tr>
        <tr>
            <th scope="row"><label for="abj404-profile-status">{Active}:</label></th>
            <td>
                <input type="checkbox" id="abj404-profile-status" value="1" checked>
                <label for="abj404-profile-status">{Profile is active}</label>
            </td>
        </tr>
    </table>

    <button type="button" id="abj404-save-engine-profile-btn" class="button button-primary">{Save Profile}</button>
    <button type="button" id="abj404-cancel-engine-profile-btn" class="button">{Cancel}</button>
    <span id="abj404-engine-profile-save-msg" style="display:none; margin-left: 8px;"></span>
</div>

</div><!-- end abj404-engine-profiles-section -->

```
