Я хотел бы иметь возможность удалить часть URL-адреса, если она дублируется непосредственно после себя.RegEx in .htaccess удалить дублируемую часть URL-адреса
К примеру у меня есть следующие ссылки:
http://www.example.com/foo-bar/
http://www.example.com/foo-bar/foo-bar-1/
http://www.example.com/foo-bar/foo-bar-2/0000-0000/
http://www.example.com/foo-bar/foo-bar-bar/foo/
http://www.example.com/foo-bar/foo-bar-foo/foo/bar/
http://www.example.com/foo-bar/foo-bar-foobar/foo/0000-0000/bar/
Я хотел бы, чтобы удалить первый «Foo-бар» из URL, только если «Foo-бар» появится в следующей части URL. Так что я бы в конечном итоге с этим адресам:
http://www.example.com/foo-bar/
http://www.example.com/foo-bar-1/
http://www.example.com/foo-bar-2/0000-0000/
http://www.example.com/foo-bar-bar/foo/
http://www.example.com/foo-bar-foo/foo/bar/
http://www.example.com/foo-bar-foobar/foo/0000-0000/bar/
Я использовал RegExr, чтобы проверить следующее регулярное выражение:
([a-zA-Z]+[^/]*)\W+\1-
Это выбирает все, кроме первого URL, поскольку он не имеет дублирования «foo- бар".
Затем я положил, что в RewriteCond и RewriteRule:
RewriteCond %{REQUEST_URI} ([a-zA-Z]+[^/]*)\W+\1-
RewriteRule [a-zA-Z]+[^/]* http://%{HTTP_HOST}/$1 [L,R=301]
и протестировали его с помощью 'HTAccess тестера' по следующему адресу:
http://www.example.com/foo-bar/foo-bar-foobar/foo/0000-0000/bar/
который получил переписан:
http://www.example.com/foo-bar-foobar/foo/0000-0000/bar/
Но когда я помещаю этот код в свой .htaccess файл и просматриваю URL-адрес, он фактически перенаправляет:
http://www.example.com/
Затем я вернулся и посмотрел на RewriteRule и RegEx я использовал:
[a-zA-Z]+[^/]*
Когда я побежал это через RegExr я понял, что это был выбор намного больше, чем просто первый «обув -бар".
Я считаю, что это то место, где я застреваю, поскольку я не могу определить RegEx, который выбирает только первый «foo-bar». Я попытался найти решение, я попытался адаптировать некоторые из ответа люди дали на следующие вопросы, но безрезультатно:
RewriteCond RewriteRule for .htaccess based on URL to a new page, regular expression
Regex to find text between second and third slashes
Я надеюсь, что я объяснил себя достаточно хорошо. Любые вопросы, пожалуйста, спрашивайте.
Заранее спасибо,
Chris.