2012-01-19 1 views
1

---- EDIT ---URL Rewrite Условия и параметры URL-адреса

Я только что понял, что в моем объяснении проблемы отсутствует важная информация.

URL-адрес должен только быть перенаправлен, если присутствует второй параметр.

Так правило следует читать:

Перенаправление любой URL, который имеет/d/в нем, только если/d2/является также найдено в URL.

---- Конец Edit_ _

У меня есть необходимость 301 перенаправление всего URL, на сайте, который содержит конкретный параметр на тот же URL, но с дополнительным каталогом включен. Все из URL, которые требуют перенаправления содержат определенный каталог:/d/Пример:

http://www.mysite.com/category1/d/ subcategory1/subdirectory2/

--Should Перенаправление -

http://www.mysite.com/newdirectory/ category1 /d/ subcategory1/subdirectory2/

Единственное общего с любым из требующих перенаправление URL является то, что они все содержат каталог/d/в URL-адресе, который всегда сразу следует за каталогом категории, как выделено жирным шрифтом в примерном URL-адресе выше. Затем я хотел бы добавить дополнительный каталог перед каталогом категории, как выделено жирным шрифтом в примере выше. Остальная часть URL-адреса останется прежней.

Может ли кто-нибудь помочь в этом? Я относительно новичок в mod_rewrite и понимаю, что могу сделать большой беспорядок, если не пойму это правильно.

Спасибо заранее для тех, кто может предложить hlep

:)

ответ

3

Попробуйте (отредактирован, чтобы отразить изменения в вопросе):

RewriteEngine On 
    RewriteBase/

    RewriteCond %{REQUEST_URI} ^.*/d/.* [NC] 
    RewriteCond %{REQUEST_URI} ^.*/d2/.* [NC] 
    RewriteCond %{REQUEST_URI} !/newdirectory/ [NC] 
    RewriteRule ^(.*)/d/(.*)$ http://www.mysite.com/newdirectory/$1/d/$2 [R=301,L] 
+0

Адиэль, Благодарим вас за ваш ответ. К сожалению, мой первоначальный запрос на помощь оставил важную информацию, необходимую для создания правильного правила. –

+0

Я отредактировал свой ответ. Теперь перенаправление применяется только в том случае, если запрос содержит как '/ d /', так и '/ d2 /' –

+0

. Это работало как шарм. Большое спасибо!!! :) –

0

Попробуйте добавить следующие строки в ваш файл Htaccess в корневом каталоге вашего сайта.

RewriteEngine On 
RewriteBase/

#if the url contains a /d2/ [NC] 
RewriteCond %{REQUEST_URI} /d2/ [NC] 
RewriteRule ^([-a-zA-Z0-9]+/d/[-a-zA-Z0-9]+/[-a-zA-Z0-9]+/)$ /newdirectory/$1 [L,R,NC] 
+0

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

+0

@KevinGleeson отредактирован, чтобы включить '/ d2 /' –

+0

Спасибо Ульриху, мне удалось заставить его работать :) Опять же, искренняя благодарность за вашу помощь !!! –