Build your WordPress website with Elementor.Discover Elementor Affiliate link
Français

Site appearance

Comparisons and selections

Infomaniak or o2switch for fixing the MIME type of a WordPress module

Compare Infomaniak and o2switch and diagnose a WordPress JavaScript module rejected by the browser even though its URL returns HTTP status 200.

Source published: · Source updated: · Editorial policy

Read the French edition

A WordPress button remains inactive despite an HTTP 200 response

The first step is to identify the response actually received for the module: a JavaScript file with an incorrect type or an HTML page served in its place. Infomaniak and o2switch are compared for their configuration and diagnostic paths. A purchase or migration is unnecessary if the team can already correct the right route on the current account.

After a WordPress plugin update, the page displays, but the button that opens an interactive panel no longer responds. The console reports that a JavaScript module was rejected because of its MIME type. In the Network tab, the main script is received with status 200. One of its dependencies also receives a 200. Open the dependency’s response and examine its Content-Type header. A successful request describes the transport. The browser still needs to be able to process the response as a JavaScript module.

A plugin can declare a module with wp_enqueue_script_module(), available since WordPress 6.5. The entry file can in turn import several files, including a dependency whose name ends in .mjs. The browser applies its type checks to every module in the graph. A single rejected dependency is enough to prevent evaluation of the entry point that depends on it. A WordPress page can therefore retain its HTML and styles while its interactive function never starts.

Two responses produce similar symptoms. The server may deliver the correct bytes and declare them as application/octet-stream. It may also serve an HTML page at the file’s address, for example after a rewrite or because the resource no longer exists. In the first case, you must correct how the response is typed. In the second, you must locate the expected URL and file. This comparison shows how to distinguish the two cases before changing the hosting settings.

Compare before you choose

The offers at a glance

Find the use case and budget that fit, then read the details to see the limitations and any components you may need.

On smaller screens, the table scrolls horizontally. With a keyboard, press Tab to focus the table, then use the left and right arrow keys.

Prices recorded for these offers. Check terms and renewal prices before you buy.
OfferBest forPricing and billingRenewal and support
Infomaniak Web HostingRead the details A team that locates its sites and their roots in the Manager.From CHF 10.91/month excluding VAT, or CHF 130.92 excluding VAT over twelve months at this reference rate

Confirm the cycle and amount for the configuration

Public prices exclude VAT

Check the amount in the Manager. First attempt 14 days before the due date if automatic renewal is active.
o2switch GrowRead the details A team that uses cPanel and knows how to check a setting’s scope.Equivalent to €7/month excluding VAT, or €84 excluding VAT paid for twelve months

Annual payment

Prices exclude VAT; total including VAT depends on billing

€84 excluding VAT for annual renewal at the consulted rate

Record the response of the failing dependency

On the staging domain, open the browser developer tools before reloading the page. In Network, disable the cache during the test, reload, and find the resource mentioned in the console. Note the full URL, final status, and returned type. Also record the initiator or import chain, starting with the file that is actually loaded. A correctly declared entry file can import a dependency from another directory or another delivery service.

Check the Response tab. If you recognize the expected JavaScript text, compare the body’s hash with that of the approved version if necessary. If you see a home page, login page, or error page, note its title and any redirects. Downloading the body lets you compare it without relying on the preview. From a terminal on an authorized staging environment, make a GET request to the exact address, including its version query string if present. Save the headers and bytes separately.

If the result differs between two domains, check that you are requesting the same module version. Also repeat the test from the WordPress screen itself. A command-line request may receive a different response if the staging site uses a session or the browser loads another host. Keep the browser record as evidence of what the page received. Remove authentication headers and cookies from any record intended for sharing.

  • Copy the URL shown in Network for the rejected dependency, including the version parameter.
  • To save a record in PowerShell, put the exact URL in $url, then run curl.exe -sS -D entetes.txt -o module-recu.bin "$url". Examine Content-Type and, for a redirect, Location before recording the final response.
  • Compare the HTTP type, redirects, and beginning of the response with the approved release.
  • Reload the page and check whether the entry point performs the expected function again.

Distinguish an incorrect type from an incorrect file

When the body is the expected JavaScript, correct the type at the layer serving that file. text/javascript is the current recommended type for JavaScript. The browser checks the HTTP response type, including when the filename does end in .mjs. Renaming the file extension without rebuilding the imports risks creating a new path error. Also avoid changing a type for every response. The goal is to correct only the affected modules.

When the body is an HTML page, first check whether the module is present in the plugin version and in the directory served for that domain. Compare the name, case, and relative path, then follow any redirects that change the address. A rule that sends paths not matching a file to WordPress can produce a page that looks like the site. Forcing a JavaScript type on that document would leave the browser with HTML to interpret and obscure the initial diagnosis.

If you have a CDN or cache in front of the hosting server, compare the responses available through your account’s intended staging paths. The header may be correct at the origin and different at the URL actually used by the page. Identify the layer providing the response before purging. After the correction, invalidate the affected file according to the cache procedure and check the page and module again. Status 200, the MIME type, and the expected bytes must be consistent in the same record.

Infomaniak: check the site and Apache rule

In the Infomaniak Manager, identify the hosting account, affected site, and its root. The documentation describes .htaccess for Apache configuration and file access through FTP or SSH. Download a copy of the existing file before testing. If the module is delivered correctly and Apache serves this static resource, the AddType text/javascript .mjs directive associates the extension with the desired type in a context that permits it. Start in the smallest appropriate staging directory, taking into account how deployment manages that directory.

Apache documents AddType for mod_mime, including in .htaccess when the configuration allows this directive. Whether a .htaccess file can be used depends on the site’s rules. If adding it produces a 500 error or does not change the type, restore the original copy and check with the person responsible which layer serves the URL. Keep the original setting and also test a neighboring file that should retain its original type. A rule limited to the module directory reduces the number of responses to check.

After the test, open the dependency in Network again and rerun the WordPress function. Success requires the correct file to be served with a JavaScript type and the page to actually perform the action. The field for extensions interpreted by PHP serves another purpose. Here, the browser loads a static JavaScript module. The required setting therefore concerns its HTTP response.

o2switch: confirm the domain root in cPanel

In cPanel, open Files → File Manager. The o2switch documentation says you can select a site address to reach its root and display hidden files in the settings. Use this reference before editing a configuration. If several domains or subaccounts coexist, check the staging site’s directory. A file placed in another site’s root can make it appear that the rule was ignored while changing a domain that was working.

The cPanel documentation describes the MIME Types interface, which the host can enable or hide. If it is available for your plan and its scope matches your staging directory, enter text/javascript as the type and mjs as the extension. If the interface is absent, ask the responsible team whether the server handling this domain accepts AddType in the intended directory. File Manager lets you locate the path and back up the configuration. It does not guarantee the presence of the MIME interface or the result of a directive.

Then check the address actually loaded after the site cache or any CDN. If a type added in cPanel changes resources beyond the intended scope, remove the custom rule through the same interface and try again with a validated scope. If the test used .htaccess, restore its previous file or remove only the directive introduced. Check the result on the staging domain and on a neighboring path.

Plans and terms recorded on November 11, 2026

Infomaniak Web Hosting is advertised from CHF 10.91 per month, excluding VAT in the recorded price. At that reference rate, twelve months amount to CHF 130.92 excluding VAT. The base plan lists 250 GB SSD and twenty sites. The exact amount depends on the configuration, billing cycle, and tax treatment of the order. The help page says that once automatic renewal is active, the first payment attempt takes place fourteen days before the due date. Record the next due date and amount in the Manager. The public starting price does not determine that amount for your configuration.

o2switch Grow displays the equivalent of €7 excluding VAT per month, paid as €84 excluding VAT for twelve months. The help page lists €84 excluding VAT at the consulted rate for annual renewal. The plan page advertises a free domain for one year, eight vCPU threads, and 16 GB of RAM. Show the domain renewal separately and the total including VAT at checkout. For a change affecting only one site, also check the limits of the account or subaccount hosting staging.

Both prices remain in their original currency. Compare the total for the chosen year and the additional costs actually required. For this diagnosis, the technical criterion is access to the correct domain and the ability to identify the layer serving the response. A larger disk quota or a more expensive plan does not correct an incorrect MIME declaration. A small, well-targeted change and a page check provide evidence directly related to the incident.

Restore the URL if the response contains an HTML page

When the response contains HTML, first check that the dependency is included in the archive or directory generated by the plugin version. Then inspect the path in the entry file or the mapping used for the import. A relative import resolves from the file declaring it. If the entry is moved into a delivery directory, the dependency’s path may change at the same time. When the publisher provides a build manifest, use the names and paths it specifies for the installed version.

On the staging copy, compare the request for a known working module with the request for the failing one. Check whether the server receives the request on the same domain and in the same directory. If the expected file is absent, restore the complete, consistent set of resources from the same version or redeploy the verified release. Simply adding a file with the same name can mix two versions. If a rewrite or redirect takes over, correct only the responsible rule with the site maintainer and also check a normal WordPress permalink.

Roll back by reinstalling the last complete release and restoring the copy’s original configuration. Retest the module, page, and another screen using the same plugin. If an optimization tool rewrites URLs, compare a test in which the dependency is excluded from that rewrite with normal operation. Retain the combination of settings that leaves the module accessible in the correct version and whose dependent pages have been checked.

  • Confirm that the release contains the dependency at the location resolved by the import.
  • Record every redirect and correct the response replacing the file.
  • Test the module, permalink, and WordPress function after the correction.

Four responses compared in a local browser

The ZIP contains two JavaScript files, a Python script, and its instructions. The Python server listens on the loopback interface. Chromium opens a page that loads an entry file and imports an .mjs module from the same origin. Execution or rejection of the graph is recorded in the document. A separate HTTP request records the dependency body’s type, status, and hash. Each scenario uses a temporary browser profile so the result does not depend on a previously cached response.

The browser rejects module bytes served as application/octet-stream, even with status 200. It also rejects an HTML page returned with the same status and the case in which the dependency returns 404. When the server associates the original bytes with text/javascript, the module executes and the entry file marks the page as loaded. The hashes of the binary and JavaScript responses are identical. The HTML document’s hash differs. This comparison isolates the header’s effect from cases where the content itself has changed.

The seven checks passed from the extracted ZIP with Python 3.14.4 in Chrome and Edge, both on Chromium 157. The test covers browser behavior and HTTP responses produced by the local server. Apache settings, cPanel features, and hosting paths come from their respective documentation. Use the exercise to learn to recognize the signal, then repeat the test on your WordPress copy with the plugin’s actual module.

  • Extract the ZIP and run python recette.py with a Chromium browser available.
  • Compare the statuses, types, hashes, and browser decision for the four responses.

Choose the plan according to the scope you can verify

Infomaniak suits a team that already locates its domains and their roots in the Manager and can modify the staging directory’s Apache configuration. Before retaining a rule in .htaccess, check that it is accepted and produces the expected type on the response actually used. Keep the domain settings and original file so you can quickly return to the comparison point.

o2switch Grow suits a team that can locate its installations in cPanel and check the scope of the options offered in the account. File Manager helps confirm the domain and its files. The presence of the MIME Types interface and the configuration’s effect on the response still need to be observed. If a separate layer distributes the plugin, apply the correction to that layer.

In both cases, record the page URL and dependency URL, the type and content received, and then the visible result of the WordPress action. A correct response for the URL copied into the browser must be accompanied by a test of the page importing the dependency, because it may use another version or domain. Also keep the result obtained on a neighboring path. This record is enough to pass the diagnosis to another person without asking them to change all the hosting rules.

Further reading

Sources and references

Use these references to check the features, requirements and limitations described. Reading documentation is not a practical test.

View 13 references

Uses, prices and what to check

2 offers in detail

Compare the features you need and the terms of each offer. The order of these entries does not indicate a ranking.

Paid offer

Infomaniak Web Hosting

Infomaniak journey. Confirm the test root, examine the module’s response and scope the Apache rule to the folder if it is allowed.Check the module’s type on the server — BlogPasCher editorial illustration.Open full-size illustration ↗

Best forA team that locates its sites and their roots in the Manager.

Documented Apache configuration for the site and checks by directory.

Offer pricing

From CHF 10.91/month excluding VAT, or CHF 130.92 excluding VAT over twelve months at this reference rate

Billing: Confirm the cycle and amount for the configuration

Renewal and support: Check the amount in the Manager. First attempt 14 days before the due date if automatic renewal is active.

Public prices exclude VAT

Checked on .

Strengths

  • Apache and .htaccess documented
  • 250 GB SSD and twenty sites initially

What to consider

  • Check whether the directory accepts the directive
  • Renewal amount specific to the account
Pricing terms and compatibility

Understanding the offer

Price at the time of review
From CHF 10.91/month excluding VAT, or CHF 130.92 excluding VAT over twelve months at this reference rate
Currency
CHF
Billing
Confirm the cycle and amount for the configuration
Renewal and support
Check the amount in the Manager. First attempt 14 days before the due date if automatic renewal is active.
Taxes and fees
Public prices exclude VAT
Commitment and terms
According to the account’s cycle and configuration
Date checked

Compatibility and components

  • WordPress
  • Apache
Read the full Infomaniak profile →View official site for Infomaniak Web Hosting (opens in a new tab)Back to the table
Paid offer

o2switch Grow

o2switch journey. Find the domain folder in cPanel, check the scope of a MIME setting and rerun the WordPress action.Find the domain folder in cPanel — BlogPasCher editorial illustration.Open full-size illustration ↗

Best forA team that uses cPanel and knows how to check a setting’s scope.

cPanel File Manager to identify the domain and staging directory.

Offer pricing

Equivalent to €7/month excluding VAT, or €84 excluding VAT paid for twelve months

Billing: Annual payment

Renewal and support: €84 excluding VAT for annual renewal at the consulted rate

Prices exclude VAT; total including VAT depends on billing

Checked on .

Strengths

  • Documented File Manager
  • Published annual renewal cost

What to consider

  • Check availability of the MIME Types interface
  • Check the setting’s scope for each domain
Pricing terms and compatibility

Understanding the offer

Price at the time of review
Equivalent to €7/month excluding VAT, or €84 excluding VAT paid for twelve months
Currency
EUR
Billing
Annual payment
Renewal and support
€84 excluding VAT for annual renewal at the consulted rate
Taxes and fees
Prices exclude VAT; total including VAT depends on billing
Commitment and terms
Twelve months
Date checked

Compatibility and components

  • WordPress
  • cPanel
Read the full o2switch profile →View official site for o2switch Grow (opens in a new tab)Back to the table

English translation of the reviewed French edition. Code examples retain their original identifiers, comments and output strings for reproducibility. Linked exercise files and original screenshots may contain French. No new practical tests or price checks are implied by translation.

Continue reading in English