# Hostnames plugin

Attention

The “Hostname replace” plugin has been replace by “Hostnames plugin”, see PR 3463 & PR 3552.

The Hostnames plugin can be enabled by adding it to the `enabled_plugins` list in the `setting.yml` like so.

>     enabled_plugins:
>       - 'Hostnames plugin'
>       ...

- `hostnames.replace`: A mapping of regular expressions to hostnames to be replaced by other hostnames.

      hostnames:
        replace:
          '(.*\.)?youtube\.com$': 'invidious.example.com'
          '(.*\.)?youtu\.be$': 'invidious.example.com'
          ...

- `hostnames.remove`: A list of regular expressions of the hostnames whose results should be taken from the results list.

      hostnames:
        remove:
          - '(.*\.)?facebook.com$'
          - ...

- `hostnames.high_priority`: A list of regular expressions for hostnames whose result should be given higher priority. The results from these hosts are arranged higher in the results list.

      hostnames:
        high_priority:
          - '(.*\.)?wikipedia.org$'
          - ...

- `hostnames.lower_priority`: A list of regular expressions for hostnames whose result should be given lower priority. The results from these hosts are arranged lower in the results list.

      hostnames:
        low_priority:
          - '(.*\.)?google(\..*)?$'
          - ...

If the URL matches the pattern of `high_priority` AND `low_priority`, the higher priority wins over the lower priority.

Alternatively, you can also specify a file name for the mappings or lists to load these from an external file:

    hostnames:
      replace: 'rewrite-hosts.yml'
      remove:
        - '(.*\.)?facebook.com$'
        - ...
      low_priority:
        - '(.*\.)?google(\..*)?$'
        - ...
      high_priority:
        - '(.*\.)?wikipedia.org$'
        - ...

The `rewrite-hosts.yml` from the example above must be in the folder in which the `settings.yml` file is already located (`/etc/searxng`). The file then only contains the lists or the mapping tables without further information on the namespaces. In the example above, this would be a mapping table that looks something like this:

    '(.*\.)?youtube\.com$': 'invidious.example.com'
    '(.*\.)?youtu\.be$': 'invidious.example.com'