Назад | Перейти на главную страницу

.htaccess 301 редирект удалить [] из URL

Я хочу удалить "[" и "]" из URL-адресов и перенаправить на правильную ссылку.

Вот пример URL:

/forums/garage-150/cool-cars-sightings-[archived]-7610/index127.html

Необходимо перенаправить на:

/forums/garage-150/cool-cars-sightings-archived-7610/index127.html

Вот то, что я написал до сих пор, но все еще не работает ..

Options +FollowSymlinks
Options +Indexes
RewriteEngine on
RewriteRule ^/forums/(.*)/(.+)\[(.+)\](.+)/(.+)$ /forums/$1/$2$3$4/$5 [R=301]

Ваша директива выглядит нормально, кроме случаев, когда она находится в .htaccess тогда вам нужно удалить префикс косой черты из RewriteRule шаблон. Например:

RewriteRule ^forums/(.+)/(.+)\[(.+)\](.+)/(.+)$ /forums/$1/$2$3$4/$5 [R=301,L]

RewriteRule директивы в каталог контекст (который включает .htaccess) соответствует URL-пути меньше префикса каталога. В префикс каталога всегда заканчивается косой чертой, поэтому URL-путь, RewriteRule шаблон матчи против никогда не начинаются с косой черты.

Возможно, вам потребуется добавить L отметьте, если у вас (планируете) будет больше директив. (Я также изменил первую захваченную группу с .* к .+, поскольку совпадение нулевой ширины здесь невозможно.


ОБНОВИТЬ:

Htaccess, в который я поместил этот код, находится в / каталог. А также есть .htaccess в /forums каталог

Если есть существующий .htaccess файл в /forums подкаталог, который также использует mod_rewrite, тогда (по умолчанию) это полностью переопределит указанную выше директиву (в вашем корне .htaccess файл). Вышеуказанная директива даже не будет обработана.

Самый простой способ решить эту проблему - переместить указанную выше директиву в /forums/.htaccess файл (вверху). Поскольку это перенаправление относится к форуму, это также кажется наиболее логичным подходом. Однако вам также потребуется изменить RewriteRule шаблон читать:

RewriteRule ^(.+)/(.+)\[(.+)\](.+)/(.+)$ /forums/$1/$2$3$4/$5 [R=301,L]