.htaccess/mod_rewrite 301 проблема

У меня есть сайт со следующим mod_rewrite правила в .htaccess файл:

RewriteRule ^web-design/case-studies/(.+)/$  work.php?slug=$1  [L,NC]
RewriteRule ^web-design/case-studies/        work.php          [L,NC]

Я хочу настроить перенаправление 301 для любых запросов, таких как domain.com/web-design (с косой чертой или без нее) и перенаправить на example.com/web-design/case-studies/ (с косой чертой).

К сожалению, сочетание Redirect а также RedirectMatch правила, которые я пытался противоречить RewriteRules У меня есть и в конечном итоге с петлей перенаправления.

Регулярные выражения на самом деле не мое, но я думаю, мне понадобится RewriteMatch Правило для соответствия запросов, которые начинаются с /web-design но также не содержат /case-studies? Как это будет сделано в .htaccess?

1 ответ

Решение

Пожалуйста, попробуйте эти правила в ваших.htaccess правилах:

RewriteEngine on
Options +FollowSymlinks -MultiViews

RewriteRule ^web-design/?$ /web-design/case-studies/          [L,NC]

RewriteRule ^web-design/case-studies/?$ /work.php             [L,NC]

RewriteRule ^web-design/case-studies/(.*)$ /work.php?slug=$1  [L,NC,QSA]

В последнем правиле важно использовать QSA, чтобы не потерять существующие параметры QUERY. Я проверил эти правила, и они, кажется, работают нормально. Конечный слеш необязателен в первых двух правилах в соответствии с вашими требованиями.

Другие вопросы по тегам