it-swarm.com.de

leiten Sie 204 mit htaccess um, wenn die URL eine bestimmte Zeichenfolge enthält

Ich bekomme jede Menge URLs mit "undefiniert" am Ende der URL, die ungefähr 20% meiner Seitenaufrufe ausmachen. Ich habe versucht, die problematische Skriptquelle zu überprüfen und kann sie nicht finden. Einige Lösungen ausprobiert, aber keine funktioniert. Zuletzt versuche ich, URL mit „undefiniertem“ Zeichenkette zu senden, um 204 mit htaccess umzuleiten

ist das richtig?

RewriteRule ^undefined$ - [R=204,NC,L]

muss ich "last L" -Flag hinzufügen?

wo lege ich es hin?

über WordPress?

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^undefined$ - [R=204,NC,L]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

in WordPress?

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^undefined$ - [R=204,NC,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

oder nach WordPress?

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^undefined$ - [R=204,NC,L]
</IfModule>

ich habe überall danach gesucht und ich möchte sicherstellen, dass dies korrekt ist, indem ich auf diesem Stapel frage, wer sich oft damit befasst hat. Danke vielmals!

3
somuch72

Um "undefined" am Ende des URL-Pfades zu finden, benötigen Sie das Regex-Muster undefined$. Das Muster ^undefined$ (das Sie in Ihrer Frage verwendet haben) stimmt mit der genauen URL "undefined" überein, die niemals übereinstimmen wird, es sei denn, die Anforderung lautet http://example.com/undefined.

Diese Direktive sollte am Anfang Ihrer .htaccess-Datei stehen (nach der Direktive RewriteEngine On). Sie benötigen nur eine Anweisung RewriteEngine On am Anfang Ihres Skripts.

Also, wenn Sie sicher sind, dass diese Anfragen kommen von Ihrer Site, dann könnten Ihnen einen 204 No Content liefern, wie Sie es tun (ja, der L flag ist erforderlich).

RewriteRule undefined$ - [R=204,NC,L]

In kompatiblen Browsern passiert für den Benutzer buchstäblich nichts, wenn der Benutzer einem solchen Link folgt (wenn dies wirklich ein Link ist, auf den er klickt). Dies kann jedoch offensichtlich für den Benutzer verwirrend sein. Wenn es sich um eine externe Website handelt, die auf Sie verweist, geschieht ebenfalls nichts, wenn der Benutzer auf den Link klickt - er erreicht Ihre Website nicht.

Es ist jedoch vorzuziehen, auf die richtige URL umzuleiten (wenn lediglich der "undefinierte" Teil vom Ende des URL-Pfads entfernt werden soll). Dies würde alle Situationen abfangen und Suchmaschinen über die richtige URL informieren (Berichte in den verlinkten Artikeln deuten darauf hin, dass Googlebot auch diese URLs crawlt).

RewriteRule (.*)/undefined$ /$1 [R=301,L]
4
MrWhite

Wenn Sie eine Vielzahl von Anfragen erhalten, denen undefinierte URLs hinzugefügt wurden, und Sie wissen, dass es sich beim Zugriff auf diese URLs um Personen und nicht um Robots handelt, sollten Sie den HTTP-Statuscode 301 verwenden und die URL an die richtige URL umleiten.

Die Verwendung des Statuscodes 204 ist nicht hilfreich, da dies "Kein Inhalt" bedeutet und der Benutzer die URL in der Adressleiste manuell ändern muss, um auf die Seite zuzugreifen. Abhängig vom Browser erzeugt eine Anforderung, die einen Statuscode 204 zurückgibt, entweder eine Popup-Nachricht, die angibt, dass das Dokument keinen Inhalt hat, oder der Bildschirm ist einfach leer.

3
Mike