/ / Umschreiben durch Entfernen von Duplikaten - Regex, Apache, .htaccess, Redirect, Mod-Rewrite

Rewrite durch Entfernen von Duplik wenn gefunden - Regex, Apache,. Htaccess, Redirect, Mod-Rewrite

Meine jetzige .htaccess sieht aus wie das

RewriteEngine On
RewriteBase /

# / = /home
RewriteRule ^$ index.php?r=home [QSA,L]

# /example/ = /example
RewriteRule ^(.*)/$ /$1 [L,R=301]


# request, but not pointing to an existing file
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

# pass the whole request as a variable
RewriteRule ^(.+)$ index.php?r=$1 [QSA]

Nachdem diese Änderungen vorgenommen wurden, möchte ich sicherstellen, dass die URL am Ende keinen duplizierten Teil eines Pfads enthält.
Hier sind einige Testfälle, um klarer zu demonstrieren, was ich erreichen möchte:

domain.tld/example                // No more rewrites
domain.tld/example/example        // Rewrite to domain.tld/example
domain.tld/test/example/example   // Rewrite to domain.tld/test/example
domain.tld/example/test/test/test // Rewrite to domain.tld/example/test/test

Wenn also der letzte Teil der URL mit dem vorletzten Teil identisch ist, entfernen Sie den letzten Teil.

Ich habe es geschafft, diesen regulären Ausdruck zusammenzustellen:

/(.+)/{1}1$

das scheint mit doppelten Teilen der URL übereinzustimmen, aber ich weiß nicht, ob dies für meine Bedürfnisse ganz richtig ist oder wie man die tatsächliche URL selbst umschreibt.

Jede Hilfe mit diesem würde sehr geschätzt werden.

Antworten:

0 für die Antwort № 1

Ich habe herausgefunden, dass ich Folgendes verwenden kann RewriteRule um das zu erreichen.

RewriteRule (.+)/1$ $1 [L,R=301]