PHPackages                             iqual/iq\_multidomain\_extensions - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. iqual/iq\_multidomain\_extensions

ActiveDrupal-custom-module

iqual/iq\_multidomain\_extensions
=================================

Support for multidomain.

v3.1.3(1mo ago)018.2k↓25%4[2 PRs](https://github.com/iqual-ch/iq_multidomain_extensions/pulls)GPL-2.0+PHPPHP ^8.1

Since Jun 10Pushed 6mo ago3 watchersCompare

[ Source](https://github.com/iqual-ch/iq_multidomain_extensions)[ Packagist](https://packagist.org/packages/iqual/iq_multidomain_extensions)[ Docs](https://github.com/iqual-ch/iq_multidomain_extensions)[ RSS](/packages/iqual-iq-multidomain-extensions/feed)WikiDiscussions 3.x Synced 1mo ago

READMEChangelog (10)Dependencies (8)Versions (36)Used By (0)

iq\_multidomain\_extensions
===========================

[](#iq_multidomain_extensions)

Contains extensions, config etc. for a multidomain setup

Installation guide

1. Install iq\_multidomain\_extensions
2. add domain records /admin/config/domain

IMPORTANT NOTES

- Make sure that the pattern ids and template names have to be identical (Pay attention to - and \_)

Upgrade from 2.x
----------------

[](#upgrade-from-2x)

With Drupal 10, domain\_site\_settings and domain\_theme\_switch are deprecated and are replaced by domain\_config. This causes breaking changes.

- Upgrade to 2.5.y and run update hooks. This will convert favicons and robotstxt settings to use domain\_config.
- Recreate theme selection per domain at /admin/appearance if iq\_multidomain\_domain\_theme\_switch was used before.
- Remove domain\_site\_settings and domain\_theme\_switch from the project
- Upgrade to 3.x

### Theme per domain

[](#theme-per-domain)

Install the iq\_multidomain\_domain\_theme\_switch submodule:

```
drush en iq_multidomain_domain_theme_switch

```

Go to /admin/appearance to select the theme per domain.

#### Notes

[](#notes)

- The sub module prefixes pattern ids from selected themes with the theme name (except for the global default theme).
- All themes need the same patterns to commonly use views.
- Autogenerated domain specific references to patterns might include the theme name and need to be adjusted on selecting or renaming a theme.

### XML Sitemaps per domain

[](#xml-sitemaps-per-domain)

Install the iq\_multidomain\_sitemap\_extension submodule:

```
drush en iq_multidomain_sitemap_extension

```

Go to /admin/config/search/xmlsitemap to add sitemaps. On each sitemap, there's a new field available to set the domain.

### Favicon

[](#favicon)

The "iq\_multidomain\_favicon\_extension" has been removed.

### Robots.txt

[](#robotstxt)

If you want to register a `robots.txt` file per domain, you must activate iq\_multidomain\_robotstxt\_extension. Install it with

```
drush en iq_multidomain_robotstxt_extension

```

Once installed, robots.txt can be configured at /admin/config/search/robotstxt.

Additionally incoming public requests have to be passed to the module (i.e. PHP) on either the `/robots` or `/robots.txt` path.

#### Kubernetes nginx ingress setup

[](#kubernetes-nginx-ingress-setup)

You also need to add the following annotation to all main domain ingresses:

```
nginx.ingress.kubernetes.io/configuration-snippet: |-
  location = /robots.txt {
    rewrite ^ /robots last;
  }
```

> It is also advised to enable the www-redirect option and to not set the `www` or non-`www` domain in the ingress respectively. (i.e. `nginx.ingress.kubernetes.io/from-to-www-redirect: "true"`)

This rewrites incoming requests to `robots.txt` to the correct dynamic endpoint (`/robots`) bypassing any existing robots file.

#### Nginx example

[](#nginx-example)

If you want to pass the request to php directly in your application nginx, you can use an approach like this:

```
location = /robots.txt {
    rewrite ^ /index.php last;
}
```

###  Health Score

52

—

FairBetter than 96% of packages

Maintenance76

Regular maintenance activity

Popularity29

Limited adoption so far

Community21

Small or concentrated contributor base

Maturity72

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~58 days

Recently: every ~37 days

Total

31

Last Release

59d ago

Major Versions

v0.7 → v2.02022-03-01

2.5 → 3.0.02023-10-28

2.5.2 → 3.0.22023-11-26

### Community

Maintainers

![](https://www.gravatar.com/avatar/90cd0a373720aba510d144cf310f4b036ae8d79f1f7385d663ae20b87a3fb017?d=identicon)[pvbergen](/maintainers/pvbergen)

![](https://www.gravatar.com/avatar/890fffdae387fc892ae3303b453cc41e8da9f56a3ae19463e8d9694478e29ee6?d=identicon)[danielwirz](/maintainers/danielwirz)

![](https://www.gravatar.com/avatar/eb59715390ddb5e8d804e769ee3c1705073b18c39a0d0a7ad852c91c28be46c3?d=identicon)[martinstadelmann](/maintainers/martinstadelmann)

![](https://www.gravatar.com/avatar/43082de1b2e2b2b2d48b7ff7dbc7c60ff1d0a015123d4062ac0b49ea0b3b725f?d=identicon)[iqual](/maintainers/iqual)

---

Top Contributors

[![danielwirz](https://avatars.githubusercontent.com/u/42937331?v=4)](https://github.com/danielwirz "danielwirz (50 commits)")[![bkomel](https://avatars.githubusercontent.com/u/5403050?v=4)](https://github.com/bkomel "bkomel (28 commits)")[![youpixxl](https://avatars.githubusercontent.com/u/3398689?v=4)](https://github.com/youpixxl "youpixxl (21 commits)")[![ignovski](https://avatars.githubusercontent.com/u/52161024?v=4)](https://github.com/ignovski "ignovski (9 commits)")[![martinstadelmann](https://avatars.githubusercontent.com/u/25382761?v=4)](https://github.com/martinstadelmann "martinstadelmann (5 commits)")[![stefanospetrakis](https://avatars.githubusercontent.com/u/17128522?v=4)](https://github.com/stefanospetrakis "stefanospetrakis (2 commits)")[![MHufenbach](https://avatars.githubusercontent.com/u/174860999?v=4)](https://github.com/MHufenbach "MHufenbach (1 commits)")[![nlebytes](https://avatars.githubusercontent.com/u/251480284?v=4)](https://github.com/nlebytes "nlebytes (1 commits)")

### Embed Badge

![Health badge](/badges/iqual-iq-multidomain-extensions/health.svg)

```
[![Health](https://phpackages.com/badges/iqual-iq-multidomain-extensions/health.svg)](https://phpackages.com/packages/iqual-iq-multidomain-extensions)
```

###  Alternatives

[drupal/core-recommended

Locked core dependencies; require this project INSTEAD OF drupal/core.

6939.5M343](/packages/drupal-core-recommended)[voidagency/vactory_starter_kit

Vactory is a custom Drupal profile which is developed and released by VOID Agency.

1019.7k](/packages/voidagency-vactory-starter-kit)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
