2016-05-27 6 views
0

Я искал здесь правильное выражение и не могу найти его. Мне нужно переписать десятки URL-адресов и использовать regex to 301 redirect all для одной страницы.301 redirect with RegEx

текущие страницы все что-то вроде:

www.example.com/2008/07/garbage.html/this-is-what-i-want

www.example.com/2005 /09/moregarbage.html/this-is-what-i-want

и я хочу, чтобы нарезать все из середины и принимать обе страницы в

www.example.com/this-is-what -i-want

+0

Добро пожаловать в Переполнение стека. Можете ли вы привести пример одной из вещей, которые вы уже пытались решить? – BlackVegetable

+0

Какой веб-сервер? Язык сценария на стороне сервера? Переадресация Javascript? – C14L

+0

Я использую инструмент перенаправления в wordpress для реализации перенаправления. Я попробовал несколько вариантов переадресации, чтобы заставить это работать. Я попробовал один (я забыл, что это было), который сделал его www.mydomain.com/this-is-what-i-want/2008/07/garbage.html, а затем ^/this-is-what-i-want/(. +) $, но ничего не работает, и я получаю 404s независимо от того, что я делаю – cvs

ответ

1

в вашей основной WP .htaccess вы можете использовать это правило перезаписи чуть ниже RewriteEngine линии:

RewriteEngine On 

RewriteRule ^\d{4}/.*/([^/]+)/?$ /$1 [L,R=301] 
+0

Спасибо anubhava, что делает в \ d {4} /, выражение, которое я сопоставляю, которое я намерен сохранить? – cvs

+0

'\ d {4}' соответствует части года в начале. Часть, которую мы держим, последняя '([^ /] +)' одна. Вы попробовали? – anubhava

+1

Да, я понял, что после публикации комментария - я сделал, и это сработало отлично, спасибо! – cvs

0

Похоже, вы хотите, чтобы все было удалено с первого/последнего ...

Я не знаю, на каком языке вы работаете, но что-то подобное будет работать как регулярное выражение, чтобы соответствовать тому, что вы хотел соответствовать.

((HTTPS: //?) [^ /] +) /.+ (/ [^ /] +)

Первый и третий матч группы содержат части, которые вы хотите ... например, в Python:

import re 
str = 'http://www.example.com/test/this.com/this-is-what-I-want' 
regexp = r'((https?://)?[^/]+)/.+(/[^/]+)' 
match = re.match(regexp, str) 
print match.group(1) + match.group(3) 

урожайность:

$ python t.py 
http://www.example.com/this-is-what-I-want 
+0

Спасибо, Пол. Поэтому я мог бы сделать строку ^/this-is-what-I-want, и она должна работать для любого «материала» перед этим, не так ли? – cvs

+0

Я вижу, что кто-то ответил WP конкретно. :) –