Перезапись URL htaccess не работает с дефисами - PullRequest
0 голосов
/ 21 января 2020

У меня есть какой-то фантастический c код для перезаписи некоторых URL с помощью .htaccess. И это прекрасно работает.

Однако, кажется, что URL не принимает дефисы.

RewriteRule ^/?company/(\w+)/?$ /company-page.php?pURL=$1 [END]
RewriteRule ^/?company/(\w+)/(\d+)/?$ /company-page.php?pURL=$1&page=$2 [END]

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

Вот URL, который работает и работает fantasti c:

https://www.example.com/company/leapdifferent/

Но с дефисами в названии компании, страница возвращает 404. Например:

https://www.example.com/company/bds-dcor-prefab-pltd-21733

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

1 Ответ

1 голос
/ 21 января 2020
RewriteRule ^/?company/(\w+)/?$ /company-page.php?pURL=$1 [END]

Сокращенный класс символов \w не содержит дефисы. В частности, это соответствует a-z, A-Z, 0-9 и _ (подчеркивание).

Чтобы сопоставить дефисы, как и выше, затем измените подшаблон regex \w на [\w-], класс символов, который теперь включает дефисы.

...