PHPackages                             markshust/magento2-module-specialrouter - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. markshust/magento2-module-specialrouter

ActiveMagento2-module[Utility &amp; Helpers](/categories/utility)

markshust/magento2-module-specialrouter
=======================================

The SpecialRouter module adds the ability to use special characters in URLs.

2.0.0(2y ago)111.3k—0%2[1 issues](https://github.com/markshust/magento2-module-specialrouter/issues)MITPHPPHP ^8

Since Dec 16Pushed 2y ago2 watchersCompare

[ Source](https://github.com/markshust/magento2-module-specialrouter)[ Packagist](https://packagist.org/packages/markshust/magento2-module-specialrouter)[ RSS](/packages/markshust-magento2-module-specialrouter/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (2)Versions (4)Used By (0)

MarkShust\_SpecialRouter
========================

[](#markshust_specialrouter)

Adds the ability to use special characters in URLs.

 [![Supported Magento Versions](https://camo.githubusercontent.com/45e5726701d50831d8c261e0468005984735ea5fe0cc68a2feb449caf896d610/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d6167656e746f2d5e322e342e352d627269676874677265656e2e7376673f6c6f676f3d6d6167656e746f266c6f6e6743616368653d74727565267374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/45e5726701d50831d8c261e0468005984735ea5fe0cc68a2feb449caf896d610/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d6167656e746f2d5e322e342e352d627269676874677265656e2e7376673f6c6f676f3d6d6167656e746f266c6f6e6743616368653d74727565267374796c653d666c61742d737175617265) [![Latest Stable Version](https://camo.githubusercontent.com/499bab5f8a4c5944fc8b183562ffabd83522184db0f1ee2dced119542ce00aa8/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d61726b73687573742f6d6167656e746f322d6d6f64756c652d7370656369616c726f757465722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/markshust/magento2-module-specialrouter) [![Composer Downloads](https://camo.githubusercontent.com/2b3b0ed6ad79a49ff81ac3a3c794677e5e70fad76ea19bd8b25c0046c8effbc6/68747470733a2f2f706f7365722e707567782e6f72672f6d61726b73687573742f6d6167656e746f322d6d6f64756c652d7370656369616c726f757465722f646f776e6c6f616473)](https://packagist.org/packages/markshust/magento2-module-specialrouter) [![Maintained - Yes](https://camo.githubusercontent.com/04aba48520e6322ebc6c41b7995626a88ce408bd46ec4eb15ae474936b345276/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65642533462d7965732d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](https://GitHub.com/Naereen/StrapDown.js/graphs/commit-activity) [![](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](https://opensource.org/licenses/MIT)

Table of contents
-----------------

[](#table-of-contents)

- [Summary](#summary)
- [Installation](#installation)
- [Usage](#usage)
- [Credits](#credits)
- [License](#license)

Summary
-------

[](#summary)

Magento does not provide the ability to set special characters on controller or action names. This module fixes that by providing the ability to use `-`, `.`, `~`, `_` within a URL.

Installation
------------

[](#installation)

```
composer require markshust/magento2-module-specialrouter
bin/magento module:enable MarkShust_SpecialRouter
bin/magento setup:upgrade

```

Usage
-----

[](#usage)

This module is really simple to use. All you need to do is use the appropriate "name" that matches the symbol you'd like to use in the URL.

- Symbol: `-`, Name: `Dash`
- Symbol: `.`, Name: `Period`
- Symbol: `~`, Name: `Tilda`
- Symbol: `_`, Name: `Underscore`

For example, to respond to a request with a `frontName` of `foo` at the following location:

```
/foo/alpha-beta/charlie-delta

```

Use a PHP class named:

```
Controller/AlphaDashBeta/CharlieDashDelta.php

```

The `-` in the URL will be translated to `dash` in the actionPath and actionName, so if we create files using `Dash` in the controller and action name, they will respond to these requests.

Credits
-------

[](#credits)

### M.academy

[](#macademy)

This course is sponsored by [M.academy](https://m.academy), the simplest way to learn Magento.

[![M.academy](docs/macademy-logo.png)](https://m.academy)

### Mark Shust

[](#mark-shust)

My name is Mark Shust and I'm the creator of this repo. I'm a [6X Adobe Commerce Certified Developer](https://www.credly.com/users/mark-shust/badges) and have been involved with Magento since the early days (v0.8!). I create technical education courses full-time for my company, [M.academy](https://m.academy).

- [🖥️ See my Magento lessons &amp; courses](https://m.academy/courses)
- [📖 Read my technical articles](https://m.academy/articles)
- [🎥 Watch my YouTube videos](https://youtube.com/markshust)
- [🔗 Connect on LinkedIn](https://www.linkedin.com/in/MarkShust/)
- [🐦 Follow me on X](https://twitter.com/MarkShust)
- [💌 Contact me](mailto:mark@m.academy)

License
-------

[](#license)

[MIT](https://opensource.org/licenses/MIT)

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance29

Infrequent updates — may be unmaintained

Popularity26

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 95.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~242 days

Total

3

Last Release

756d ago

Major Versions

1.0.1 → 2.0.02024-04-13

### Community

Maintainers

![](https://www.gravatar.com/avatar/e1ee75bbeb9e6e4e83769c56197973d49f1dec7e509da22f7eb42c16fddf1012?d=identicon)[markshust](/maintainers/markshust)

---

Top Contributors

[![markshust](https://avatars.githubusercontent.com/u/437029?v=4)](https://github.com/markshust "markshust (20 commits)")[![mitzanoo](https://avatars.githubusercontent.com/u/105781214?v=4)](https://github.com/mitzanoo "mitzanoo (1 commits)")

### Embed Badge

![Health badge](/badges/markshust-magento2-module-specialrouter/health.svg)

```
[![Health](https://phpackages.com/badges/markshust-magento2-module-specialrouter/health.svg)](https://phpackages.com/packages/markshust-magento2-module-specialrouter)
```

###  Alternatives

[yireo/magento2-webp2

Magento 2 module to add WebP support to the Magento frontend

2091.2M7](/packages/yireo-magento2-webp2)[tig/postnl-magento2

TIG Magento 2 PostNL extension

58544.2k4](/packages/tig-postnl-magento2)[lillik/magento2-price-decimal

Magento 2 Price Decimal Precision

111147.5k](/packages/lillik-magento2-price-decimal)[nosto/module-nostotagging

Increase your conversion rate and average order value by delivering your customers personalized product recommendations throughout their shopping journey.

27659.1k4](/packages/nosto-module-nostotagging)[magepal/magento2-customeraccountlinksmanager

Customer Account Links Manager for Magento2 allows you to quickly and easily remove unwanted links from customer account dashboard

4084.9k](/packages/magepal-magento2-customeraccountlinksmanager)[doofinder/doofinder-magento2

Doofinder module for Magento 2

13204.0k1](/packages/doofinder-doofinder-magento2)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
