2015-04-29 5 views
0

Я добавляю 301 перенаправляет на мой сайт, здесь содержание Htaccess:Htaccess перенаправить с RedirectMatch

RedirectMatch ^/gift/birthday/(.*) /gifts.html 

результат в моем браузере:

http://www.website.com/gifts.htmlbirthday/ 

и я хочу:

http://www.website.com/gifts.html 

Как я могу это сделать?

EDIT: мой Htaccess является:

<IfModule mod_rewrite.c> 

Options +FollowSymLinks 
RewriteEngine on 

RewriteRule ^api/rest api.php?type=rest [QSA,L] 

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

RewriteCond %{REQUEST_METHOD} ^TRAC[EK] 
RewriteRule .* - [L,R=405] 

RewriteCond %{REQUEST_URI} !^/(media|skin|js)/ 


RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule .* index.php [L] 

RedirectMatch ^/gift/birthday/(.*) /gifts.html 
</IfModule> 
+0

Это единственное правило, которое у вас есть в файле htaccess? –

+0

Попробуйте очистить кеш браузера – anubhava

+0

Нет, это не единственный, см. Мой htaccess выше. (Я уже очищаю свой кеш) – dharth

ответ

0

Не смешивать mod_rewrite правила и mod_alias директивы, как это, они не обрабатываются в порядке от .htaccess, но отдельно, поскольку они обрабатываются различными модулями apache.

Что вам нужно что-то вроде этого:

# this is not mod_rewrite rule so it can be outside the IfModule 
Options +FollowSymLinks 

# all mod_rewrite rules go here 
<IfModule mod_rewrite.c> 

# initialize mod_rewrite 
RewriteEngine on 
RewriteBase/

# your redirect 
RewriteRule ^gift/birthday/ http://www.website.com/gifts.html [R=301,L] 

# copy&paste the rest of your htaccess below, just delete that RedirectMatch line 
# ... 

Это RewriteRule делает 301 перенаправления из любого URL, который начинается с подарком/день рождения/с фиксированным URL-адрес /gifts.htm. Письмо [L] означает пропустить остальные правила, если это соответствует.

Не забудьте закрыть свод правил с помощью </IfModule> в конце.

+0

спасибо, что это работает! – dharth