RewriteRule ^\/([0-9]{3,4})-(.*)\/(.*) https://www.example.com/$2 [R=301, L]
Ошибка 500, скорее всего, вызвана пробелом в аргументе flags. Это должно быть [R=301,L]
(без пробела). Однако эта директива ничего не будет делать в .htaccess
из-за префикса косой черты в шаблоне RewriteRule
. В контексте каталога (т. Е. .htaccess
) URL-путь, которому соответствует шаблон RewriteRule
, исключает префикс каталога, который заканчивается косой чертой, поэтому URL-путь, который Совпадение никогда не начинается с косой черты. (Вам потребуется сопоставить префикс с косой чертой в контексте сервера / vhost.)
Это также, вероятно, не должно быть "самым последним правилом", если у вас есть другие директивы mod_rewrite - может быть конфликт (не видя весь ваш файл).
Нет необходимости избегать косых черт в шаблоне RewriteRule
. Косые черты здесь не имеют особого значения, поскольку пробелы эффективно используются в качестве разделителей регулярных выражений в файлах конфигурации Apache.
Я бы также изменил ваше регулярное выражение, чтобы оно соответствовало всему , за исключением косой черты (т. Е. [^/]+
), вместо всего , поскольку ваше регулярное выражение (захватывая подшаблон) будет соответствовать title-of-an-event/whatever
в вашем примере URL, а не title-of-an-event
, как предполагалось. Поскольку регулярное выражение по умолчанию жадный .
Итак, попробуйте следующее вместо top вашего .htaccess
файла:
RewriteRule ^\d{3,4}-([^/]+) /$1 [R=302,L]
Это соответствует /1234-title-of-an-event
и отбрасывает все остальное, возвращая title-of-an-event
в обратной ссылке $1
. (Требуется ли трейлинг /<whatever>/
для успешного совпадения?)
\d
- это просто сокращение для [0-9]
.
Нет необходимости иметь под-шаблоны захвата в регулярном выражении, если обратные ссылки не используются.
Нет необходимости включать абсолютный URL в подстановку , если у вас нет нескольких доменов или вы канонизируете схему / имя хоста в перенаправленном ответе.
Обратите внимание, что это 302 (временное) перенаправление - измените только на 301 (постоянное) перенаправление - если это является намерением - как только вы подтвердите, что это работает нормально, чтобы избежать проблем с кэшированием. Перед проверкой вам нужно будет очистить кеш браузера.