Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Rewrite Bundle Laravel Package

atoolo/rewrite-bundle

A Symfony bundle for flexible URL rewriting and cleanup, letting you define and apply rules to transform incoming URLs. Documented, PHPStan level 9 tested, and supports PHP 8.2 through 8.4.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Verdict up front: the brief calls this a "Laravel/PHP package," but it is not one. atoolo/rewrite-bundle is a Symfony bundle (Symfony 6.3+/7.x, PHP 8.1–8.5) published by Sitepark as part of its Atoolo CMS suite. For a Laravel codebase this is an integration project, not a dependency install — and the economics likely don't clear the bar for URL rewriting alone.

Architecture fit

  • The bundle hooks into Symfony's HTTP kernel and DI container to normalize, redirect, and clean URLs before routing. Laravel's request lifecycle has no equivalent extension point for a foreign kernel — you would either embed a second kernel or reimplement the rule layer as middleware.
  • The genuinely differentiated pieces — UrlRewriteContext, SameNavigationUrlRewriteHandler, lang-prefix rewriting against translation locales, microsite support — are semantically bound to Atoolo concepts (navigation trees, resource contexts, translation locales). Those concepts come from the sibling atoolo/resource-bundle, which the bundle depends on. They carry little meaning in a Laravel app with Eloquent-backed routes.
  • What survives a port is the commodity part: rule-based path normalization and redirects. Laravel already has mature, widely adopted options here (spatie/laravel-url-rewriting, plain middleware, or nginx maps).

Integration feasibility

  • Direct use under Laravel requires symfony/http-kernel, symfony/dependency-injection, symfony/config, plus atoolo/resource-bundle — a transitive chain with no Laravel-side consumers. You'd be operating two container models in one process.
  • Composer constraint collisions with Laravel's own pinned symfony/* versions are the most likely first blocker; resolve this before any sprint is committed.
  • Effort signal: a 3–5 day spike to prove a single rewrite rule through a Laravel middleware adapter is realistic; a production-grade hybrid is a multi-week effort with ongoing dual-framework overhead.

Technical risk

Risk Severity TPM read
Stack mismatch (Symfony-only) High Adapter maintenance cost exceeds build cost for basic cases
Transitive atoolo/resource-bundle High Pulls you toward the vendor's CMS data model
Zero dependents / zero stars Medium No reference implementations, no field-tested edge cases
Single-vendor, small maintainer set Medium 2–3 named committers; no commercial support unless you're a Sitepark customer
Redirect correctness (loops, 301 poisoning) Medium Bad 301s are cached in browsers — effectively irreversible
Performance at scale Medium No published benchmarks; handler chain runs per request

Code quality itself is not the concern: PHPStan level 9, Codecov coverage, E2E suite, MIT license, and a regular ~6-month release cadence (1.6.0 was chore-only, extending PHP support to 8.5). The low score reflects adoption, not craftsmanship.

Key questions for the team

  1. Is any part of our stack actually Symfony today, or planned to be? If no, this is a no-go on fit.
  2. Are we a Sitepark/Atoolo customer, or likely to become one? If no, most of the bundle's value is unreachable.
  3. What percentage of our rewrite rules are static (config) versus dynamic (DB/editor-managed)? Static rules rarely justify a framework bridge.
  4. Who is the business owner of the URL taxonomy, and who approves new 301s?
  5. What is our exit plan if the vendor stops publishing — fork, or port the rules?

Integration Approach

Stack fit

  • Pure Laravel (most likely): do not adopt. Implement a RewriteUrlMiddleware in front of the router, backed by a config table, and treat the bundle as a design reference for rule modeling (context objects, priority ordering, locale prefixes). This preserves the good ideas at a fraction of the operational cost.
  • Hybrid Laravel + Symfony components: viable only if the org already runs Symfony services. Use a bridge (spatie/laravel-symfony-components) to expose the rewrite handler as a bound service, and wrap it in Laravel middleware. Accept the dual-container tax knowingly.
  • Symfony or Atoolo host: adopt directly. This is the bundle's designed path and the only one where the feature-per-effort ratio is favorable.

Migration path (if proceeding)

  1. Rule inventory first. Catalogue every redirect, normalization, and locale rule currently in nginx/Apache/middleware. Most organizations find fewer than 50 rules — a frequent "build is cheaper" verdict.
  2. Spike (1 week). Install under a Laravel branch, resolve Composer constraints, wire one normalization rule through middleware, and measure request overhead against baseline.
  3. Shadow mode (2 weeks). Run the rewrite resolver in log-only mode, comparing proposed rewrites against current behavior on production traffic. No redirects emitted.
  4. Enable normalization only (lowercase, trailing slash, duplicate slash collapse) — 301s are lowest-risk here.
  5. Enable legacy redirects with analytics instrumentation on 301/302 volume before and after.
  6. Locale and microsite rules last, and only if the host is genuinely Atoolo-shaped.

Compatibility and sequencing

  • Pin PHP 8.1–8.5 and Symfony 6.3+/7.x explicitly; validate against the Laravel version's pinned Symfony components before any lockfile change.
  • Gate everything behind a feature flag with a one-command rollback to the prior rewrite mechanism.
  • Sequence the platform upgrade (PHP 8.5) before the bundle adoption, not in the same release — 1.6.0 removed the runtime blocker, so don't bundle two risk surfaces.

Operational Impact

Maintenance

  • Low code churn (roughly two releases a year, mostly chores), but high ownership cost in a Laravel host: every Laravel or Symfony minor upgrade becomes a compatibility review for an adapter nobody else in the community is exercising.
  • Budget ~1–2 engineer-days per quarter for dependency alignment in a hybrid setup; near zero on a native Symfony host.

Support

  • Community-only: GitHub issues, single vendor, no SLA, no paid support path unless already inside a Sitepark contract. Documentation lives on an external vendor site, not in the repo.
  • The bus factor is real — three named contributors, one of whom authored the majority of recent commits.

Scaling and performance

  • Rewrite resolution runs in the request path per request. No published benchmarks and no documented caching layer, so treat performance as unproven and require a load test at projected peak before cutover.
  • At high traffic, prefer pushing static rules to the CDN/edge (nginx maps, Fastly VCL) and reserve the application layer for genuinely dynamic cases.

Failure modes

  • Redirect loops from overlapping rules — mitigate with a hop-depth cap and a rule-priority test suite.
  • Irreversible 301 caching: a wrong permanent redirect persists in browsers and search indexes long after the fix. Use 302 during rollout; promote to 301 only after shadow-mode validation.
  • SEO regression from silent normalization changes — instrument organic traffic and crawl-error rates as the release gate, not just unit tests.
  • Composer resolution failure on upgrade, blocking unrelated Laravel security patches. Isolate the dependency in its own service boundary if possible.

Ramp-up

  • Symfony-fluent engineers: days. Laravel-only teams: weeks, and the learning buys you almost nothing transferable to the rest of the codebase.
  • Requires a written runbook: who owns rules, how a new redirect is requested and approved, how to disable the middleware in an incident, and how to audit emitted redirects.

Recommendation for the roadmap Fund a one-week spike only if a Symfony or Atoolo footprint already exists. Otherwise, log the decision as "reference architecture, not a dependency" — borrow the rule model, implement natively, and revisit if the organization standardizes on Sitepark's stack. The platform-currency win (PHP 8.5 support) is worth noting in planning, but it removes a blocker rather than creating a reason to adopt.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
unabomber/timezone
delatbabel/contacts
astritzeqiri/g-recaptcha
kevinongko/laravel-genode
developeruz/laravel-analytics
robbiep/afterthedeadline
frankkessler/incontact-laravel-oauth2-rest
jlxh/laravel-userlog
davidmgilo/timetables
qylinfly/role-permission
reflect-digital/conduit
takashato/laravel-vietqr
aitor24/laralang
kraenzle-ritter/entity-relations
dindigital/din-image
pomirleanu/image-colors
sawmainek/laravel-api-generator
delatbabel/jsonresponses
mouhamedfd/permissions-generator
eduplus/qr