.htaccess-Regeln für 301- und 302-Weiterleitungen erstellen
Wandeln Sie eine Weiterleitungsliste in direkt einsetzbare Apache-Regeln um, ohne reguläre Ausdrücke von Hand zu schreiben.
Im Browser ausführen – kostenlos
Geben Sie jeden alten Pfad mit seinem Ziel an, wählen Sie eine permanente 301- oder temporäre 302-Antwort und erhalten Sie exakte RewriteRule-Zeilen sowie einen vollständigen .htaccess-Block. Der Generator schützt Quellpfade durch korrektes Escaping, unterstützt lokale Ziele und absolute HTTP- oder HTTPS-URLs, behält Ihre Reihenfolge bei und meldet unvollständige Paare, bevor daraus fehlerhafte Weiterleitungen entstehen.
Bereiten Sie eine eindeutige Weiterleitungsliste vor
Legen Sie für jede zu verschiebende Adresse eine Zeile an. Das Werkzeug zum Erstellen von .htaccess-Weiterleitungsregeln erwartet den Quellpfad im Feld from und das Ziel im Feld to. Die Quelle muss ein mit einem Schrägstrich beginnender, wurzelrelativer Pfad sein, zum Beispiel /alte-produkte/widget. Lassen Sie Abfragezeichenfolgen und Fragmente aus der Quelle heraus, da Apache RewriteRule den URL-Pfad und nicht diese Bestandteile abgleicht. Als Ziel eignet sich ein anderer wurzelrelativer Pfad derselben Website oder eine vollständige HTTP- beziehungsweise HTTPS-URL, wenn Besucher zu einem anderen Host wechseln sollen. Verwenden Sie bei Bedarf prozentkodierte Zeichen statt echter Leerzeichen. Belassen Sie die Zeilen in der Reihenfolge, in der Apache sie prüfen soll. Die erzeugten Regeln gleichen zwar vollständige Pfade ab und vermeiden damit viele Konflikte, doch eine bewusst gewählte Reihenfolge vereinfacht Prüfung, Pflege und Abgleich mit einer Migrationstabelle. Jede Zeile wird validiert; fehlt from oder to, stoppt die Generierung und nennt das unvollständige Paar.
Wählen Sie permanentes oder temporäres Verhalten
Wählen Sie 301, wenn der Umzug dauerhaft ist und Suchmaschinen, Browser sowie nachgelagerte Systeme die Ersatzadresse übernehmen sollen. Verwenden Sie 302 für eine vorübergehende Änderung, etwa während einer kurzen Kampagne, eines Wartungsfensters oder eines kontrollierten Tests. Der gewählte Status gilt einheitlich für alle Paare einer Anfrage. Dadurch kann eine gemischte Tabelle nicht unbemerkt ein anderes Verhalten als beabsichtigt erzeugen. Jede Ausgabezeile enthält ein verankertes Quellmuster, ein geprüftes Ziel und die Apache-Flags R=301,L oder R=302,L. Die Anker sorgen für einen exakten Pfadabgleich statt einer zu breiten Teilzeichenfolge; L beendet den aktuellen Umschreibedurchlauf nach erfolgreicher Anwendung. Außerdem maskiert der Generator Satzzeichen mit Bedeutung in regulären Ausdrücken. Ein wörtlicher Punkt oder Klammern erfassen deshalb nicht versehentlich andere Adressen. Prüfen Sie, ob Ihr Server .htaccess-Dateien auswertet und mod_rewrite aktiviert ist. Dieses Werkzeug erstellt Direktiven, kann Ihre Apache-Installation jedoch weder untersuchen noch ändern.
Installieren und prüfen Sie den erzeugten Block
Kopieren Sie den htaccess-Wert in die passende .htaccess-Datei innerhalb des Website-Bereichs, der die Quellpfade verarbeitet. Das Ergebnis enthält ausschließlich RewriteRule-Zeilen. In einer bestehenden Konfiguration ist RewriteEngine On daher möglicherweise bereits vorhanden; ergänzen Sie diese Direktive separat, falls die Umschreibung noch nicht aktiviert wurde. Sichern Sie vor Änderungen die aktuelle Konfiguration und testen Sie nach Möglichkeit in einer Staging-Umgebung. Rufen Sie jede alte URL auf und prüfen Sie Antwortstatus, Location-Header, Zielseite und das Ausbleiben einer unerwarteten Weiterleitungskette. Testen Sie ebenfalls eine ähnliche URL, die nicht weitergeleitet werden darf. Solche Negativtests zeigen Wechselwirkungen, die ein erfolgreicher Zieltest nicht erkennen lässt. Lokale Apache-Regeln können durch benachbarte Direktiven, Virtual-Host-Einstellungen, Proxy-Schichten und CMS-Umschreibungen beeinflusst werden. Für die Automatisierung liefert die API sowohl ein Array einzelner Regeln als auch einen durch Zeilenumbrüche verbundenen Block. Eine Anfrage kostet $0.002; für einmalige Migrationen läuft derselbe deterministische Generator auch im Browser.
Anwendungsfälle
Veröffentlichen Sie eine neu gestaltete Website
Wandeln Sie die freigegebene Zuordnung alter und neuer Pfade vor dem Start der neuen Struktur in exakte permanente Direktiven um.
Führen Sie eine zeitlich begrenzte Kampagne durch
Erstellen Sie konsistente 302-Regeln für kurzfristig verschobene Landingpages, die nicht als dauerhafter Ersatz gelten sollen.
Verschieben Sie ausgewählte Seiten auf eine andere Domain
Erzeugen Sie Regeln mit absoluten HTTPS-Zielen und halten Sie jeden Quellpfad ausdrücklich und leicht prüfbar fest.
Häufige Fragen
Was kostet die Nutzung?
Eine API-Anfrage kostet $0.002. Sie können den Generator auf dieser Seite auch direkt im Browser ausführen.
Enthält die Ausgabe RewriteEngine On?
Nein. Sie enthält nur RewriteRule-Zeilen, da viele vorhandene .htaccess-Dateien die Umschreibefunktion bereits aktiviert haben.
Kann eine Anfrage 301- und 302-Weiterleitungen mischen?
Nein. Der gewählte Typ gilt für alle Paare. Verwenden Sie getrennte Anfragen, wenn permanente und temporäre Regeln getrennt bleiben müssen.
Darf das Ziel auf eine andere Domain verweisen?
Ja. Es kann eine absolute HTTP- oder HTTPS-URL ohne eingebettete Zugangsdaten oder ein wurzelrelativer Pfad der aktuellen Website sein.
Was geschieht bei einem unvollständigen Paar?
Die Generierung endet mit einem Eingabefehler, der das Paar bezeichnet und angibt, ob das Feld from oder to fehlt.
Sind Abfragezeichenfolgen in Quellpfaden zulässig?
Nein. RewriteRule vergleicht Pfade und keine Abfragen; dafür sind zusätzliche RewriteCond-Direktiven außerhalb dieses Generators nötig.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/web/htaccess-redirect-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pairs":[{"from":"/old-page","to":"/new-page"},{"from":"/docs/v1/","to":"https://docs.example.com/v2/"}],"redirect_type":301}'const res = await fetch("https://api.kit.forhosting.com/web/htaccess-redirect-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pairs": [
{
"from": "/old-page",
"to": "/new-page"
},
{
"from": "/docs/v1/",
"to": "https://docs.example.com/v2/"
}
],
"redirect_type": 301
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/htaccess-redirect-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pairs": [
{
"from": "/old-page",
"to": "/new-page"
},
{
"from": "/docs/v1/",
"to": "https://docs.example.com/v2/"
}
],
"redirect_type": 301
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/htaccess-redirect-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pairs":[{"from":"/old-page","to":"/new-page"},{"from":"/docs/v1/","to":"https://docs.example.com/v2/"}],"redirect_type":301}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pairs":[{"from":"/old-page","to":"/new-page"},{"from":"/docs/v1/","to":"https://docs.example.com/v2/"}],"redirect_type":301}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/htaccess-redirect-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"pairs": [
{
"from": "/old-page",
"to": "/new-page"
},
{
"from": "/docs/v1/",
"to": "https://docs.example.com/v2/"
}
],
"redirect_type": 301
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.htaccess_redirect_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_items | 500 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |