Servicio LegalLegal Services
500+ articles out of WordPress without losing a single URL
We migrated a law firm's archive, 500+ articles in two languages, from a slow WordPress to Next.js, with one redirect per old URL and instant Meilisearch search.

Results
- Articles migrated
- 500+
- The firm's entire editorial archive, in Spanish and English, left WordPress in a single migration.
- Redirects from the old URLs
- 1:1
- Every address on the previous site points to its new equivalent: no external link and no indexed result was left pointing at a 404.
- Search across articles and services
- Instant
- A custom Meilisearch index: results as you type, typo-tolerant, across the whole archive.
From a question about campaigns to a full migration
Servicio Legal did not come asking for a website. They came asking for advice on their email campaigns. Looking at where their contacts actually came from revealed what they really had on their hands: more than five hundred articles on visas, company incorporation, trademark registration and property transactions, years of editorial work, sitting inside a slow WordPress with maintenance overdue and rankings below what that volume allowed for.
They had a valuable asset that wasn’t delivering what it could. From that conversation the project grew into what this case describes.
What breaks in a 500-article archive
An archive that size does not behave like a small blog. It fails differently:
- Speed is paid at scale. With hundreds of pages, every extra millisecond doesn’t just annoy the visitor: it multiplies across crawl budget, and some articles get visited less and less.
- Finding things takes effort. For the visitor, who gives up on a search box that stalls; and for the firm itself, which was finding it hard to keep track of what it had published.
- Administration weighs more than publishing. Every extension added to solve something was one more piece to watch, and the admin panel had become heavy to use.
- Attack surface grows with age. A WordPress with years on it accumulates third-party dependencies someone has to patch, and at a law firm there is rarely anyone dedicated to that.
The migration, URL by URL
We rebuilt the site in Next.js and migrated the full archive in both languages. The content and its English translations were supplied by the firm; we built the bilingual structure with per-language routes and made sure nothing got lost along the way.
That last part decides whether a migration like this adds value or takes it away. Five hundred articles with years online are five hundred addresses that other sites link to and that search engines have indexed. Change them without care and all of that points at an error. So the migration shipped with a 1:1 redirect map: every URL from the old WordPress redirects to its exact equivalent on the new site, in a single hop. It is invisible work, and it is the difference between inheriting the accumulated authority and starting from zero.
Leaving WordPress removes the public admin panel and the chain of extensions that needed patching: what has to be defended shrinks to what we wrote ourselves. And on speed, the underlying change is that pages stop being assembled on every visit. An archive of five hundred articles is exactly the case where that shows.
The search
A blog this size needs search designed for that volume, not the default search that returns a list sorted by date.
We built a custom Meilisearch index across articles and services, with results appearing as you type and typo tolerance, which matters in legal content: “cedula”, “temporary visa” or a misspelled practice term have to find the same thing their correct spelling does.
Having services in the same index as articles has a practical consequence: someone who arrives looking for information finds, in the same place and without leaving the flow, the service that resolves it.
Categories, internal linking and one action per area
We categorised articles and services into the firm’s real practice areas and, on that structure, designed two things:
- Internal linking between related categories. Every article points to the articles and services in its area, so authority doesn’t stay trapped in isolated pages.
- One action per practice area. An immigration article offers the action that makes sense in immigration law; a trademark article offers its own. Instead of a single contact button repeated five hundred times, the call to action matches what the person was reading.
That is a structural decision: the site is built so that whoever arrives with one very specific question finds, at the end, the door to their area.
What remained
A site that is fast because it stopped being assembled on every visit; with no third-party extensions to watch; with an archive that can be searched, is linked by area and kept every one of its addresses.
Some time later, the firm decided to concentrate its practice on fewer areas and removed the articles that attracted searches for services it no longer offers. That was their editorial decision, and the architecture absorbed it without rebuilding anything: the same structure that allows growth also allows pruning.


