I know that this question has been asked before, but none of the solutions that I have found has solved my problem. I just installed a brand new multi site from scratch on my IIS server using sub directories. Whenever I add a new site, it works fine for the most part. But as an admin, I cannot login to this new site as it will throw an ERR_TOO_MANY_REDIRECTS message. If I make a new user under this new site, then the user cannot logout as the site will throw a 404 error. The only site that I can log into is the default site. When I am logged into the default site, I can still access all my sites dashboard(including network dashboard) with no problem. I don't understand what is going on here.

Here is my web.config file.

<?xml version="1.0" encoding="UTF-8"?>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    <action type="None" />
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="{R:2}" />
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="{R:2}" />
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />

And here is what is in my wp-config.php file.

define('WP_DEBUG', false);
define( 'WP_ALLOW_MULTISITE', true );
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'example.website.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', '');
define('WP_HOME', 'http://' . $_SERVER['SERVER_NAME']);
define('WP_SITEURL', WP_HOME . '/');
/* That's all, stop editing! Happy blogging. */

There was one thing that I did find odd, and this may only apply for IIS. In my web.config file, I had to change url={R:1} to url={R:2} under Wordpress rule 4. If I don't do this, then adding a new site would result into an error whenever I try to login to the new site's dashboard. The code url={R:2} was not system generated by Wordpress, so I am curious if there might be some other inconsistencies with the web.config. I really don't know much about web.config or .htaccess, so any help would be appreciated.

Edit: I have also tried clearing browser cookies, but that didn't work.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.