WordPress 5.8 – Blockeditor im Widgetbereich: Request URL too long unter IIS (localhost)

pads 3997345 1920
Bild von _Alicja_ auf Pixabay

WordPress 5.8 ist ein weiterer großer Schritt in Richtung Full Site Editing von WordPress. Damit schwindet auch die Grenze zwischen Widgets und Blöcken weiter. Das klassische Textwidget hat ausgedient und kann nun entweder durch das HTML- oder verfügbare Blöcke (z.B. Absätze) abgelöst werden.

Nach dem Update auf WordPress 5.8 in Entwicklungsumgebungen die bei mir unter IIS laufen konnten in Projekten mit individuellen komplexeren Widgets diese im Bearbeitungsbereich nicht mehr angezeigt und bearbeitet werden.

Begründung: Request URL too long. Mithin kann man den Fehler auch bei restriktiven Hostern unter Apache finden. Unter mehr als 40 Projekten die ich in den letzten Tagen aktualisierte, waren zwei darunter, bei denen derselbe Fehler auftrat. Sofern kein Einfluss auf die Server-Einstellungen genommen werden kann, empfiehlt sich zumindest vorübergehend das Plugin Classic Widgets, um das Problem so lange abzufangen, bis der Hoster die Einschränkung korrigiert hat.

Da ich seit jeher den in Windows integrierten Webserver IIS zum Entwickeln verwende, musste ich bei den upgedateten Sites die web.config um nachfolgende Einträge ergänzen, um das Problem zu beheben.


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<system.webServer>
		<security>
			<requestFiltering>
			  <requestLimits maxQueryString="32768"/>
			</requestFiltering>
		</security>			
		<httpErrors existingResponse="PassThrough"/>
	</system.webServer>
	<system.web>
		<httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
	</system.web>	
</configuration>

Gesamte web.config für WordPress Stand Alone

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<system.webServer>
		<rewrite>
			<rules>
				<rule name="wordpress" patternSyntax="Wildcard">
					<match url="*"/>
						<conditions>
							<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
							<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
						</conditions>
					<action type="Rewrite" url="index.php"/>
				</rule>
			</rules>
		</rewrite>
		<security>
			<requestFiltering>
			  <requestLimits maxQueryString="32768"/>
			</requestFiltering>
		</security>			
		<httpErrors existingResponse="PassThrough"/>
	</system.webServer>
	<system.web>
		<httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
	</system.web>	
</configuration>

Gesamte web.config für WordPress Multisite

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 4" 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" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="{R:2}" />
                </rule>
                <rule name="WordPress Rule 7" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
        <httpErrors existingResponse="PassThrough"/>
	<security>
	    <requestFiltering>
		  <requestLimits maxQueryString="32768"/>
	    </requestFiltering>
	 </security>		
    </system.webServer>
	<system.web>
		<httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
	</system.web>
</configuration>

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht

publicly queryable