?php
/*
Plugin Name: Path-Safe Slug Redirect
Plugin URI: https://github.com/highTower/append-qs
Description: Allows using first path segment as YOURLS slug and appends remaining path & query string to target URL.
Version: 1.4
Author: highTower
*/
// 1. Slug aus dem ersten Pfadsegment extrahieren
yourls_add_filter('get_request', 'ht_custom_slug_from_first_path');
function ht_custom_slug_from_first_path($request) {
// Wenn ein Pfad vorhanden ist (nicht leer)
if (!empty($_SERVER['REQUEST_URI'])) {
$request_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$parts = explode('/', trim($request_path, '/'));
if (!empty($parts)) {
return $parts[0]; // NUR das erste Element = Slug
}
}
return $request; // Fallback
}
// 2. Subpfade + Query an Ziel-URL anhängen
yourls_add_filter('redirect_location', 'ht_append_path_and_query');
function ht_append_path_and_query($url) {
$request_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$parts = explode('/', trim($request_path, '/'));
// Erstes Segment ist der Slug → entfernen
array_shift($parts);
// Rest zusammenbauen
$subpath = implode('/', $parts);
if (!empty($subpath)) {
$subpath = '/' . $subpath;
}
$url .= $subpath;
// Query-String anhängen, falls vorhanden
if (!empty($_SERVER['QUERY_STRING'])) {
parse_str($_SERVER['QUERY_STRING'], $query);
$query_string = http_build_query($query);
$separator = (strpos($url, '?') === false) ? '?' : '&';
$url .= $separator . $query_string;
}
return $url;
}
?>
(Sollte Sie nach 10 Sekunden nicht weitergeleitet werden, bitte hier klicken)