2014-05-09 2 views
1

С предыдущей ошибкой остались плохие ссылки, и я пытаюсь очистить свой беспорядок с 301 RedirectMatch.RedirectMatch 301 для изменения части URL

Правильные URL-адреса являются следующий формат:

http://www.example.com/aaa-directory/page 
http://www.example.com/bbb-directory/page 
http://www.example.com/ccc-directory/page 

(и т.д.)

Но, ранее были плохие ссылки, которые связаны со страницами по адресу:

http://www.example.com/aaa-directory//page 
http://www.example.com/bbb-directory//page 
http://www.example.com/ccc-directory//page 

(двойной обратной косой черты // когда должно быть одиночным /)

Я исправил плохие ссылки, но я все еще получаю extern al и/или сканирование роботов, которые идут на эти плохие URL-адреса.

Я бы хотел использовать RedirectMatch 301 так, чтобы любая ссылка с текстом «-directory//» будет перенаправлена ​​на ту же ссылку с «-directory/».

Так, http://www.example.com/ccc-directory//page будет перенаправлен на: http://www.example.com/ccc-directory/page

я борюсь с синтаксисом. Любая помощь будет оценена!

(не уверен, если это необходимо, но мой текущий файл Htaccess выглядит следующим образом):

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

ответ

1

Держите перенаправлять правила перед внутренними переписан и есть еще одно правило, чтобы заботиться о //

RewriteEngine on 
RewriteBase/

RewriteCond %{THE_REQUEST} \s/+(.*?)/+(/\S*) [NC] 
RewriteRule^%1%2 [R=301,L,NE] 

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html [L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php [L] 
+0

Спасибо, но не совсем сработал. Если я вхожу в ** www.example.com/aaa-directory // page **, это приведет меня к довольно странному URL-адресу, который выглядит следующим образом: ** http: //www.example.com/home3/username/public_html/ example.com/aaa-directory/page**. Этот странный URL-адрес, по крайней мере, меняет двойную обратную косую черту на единицу ... так что, возможно, мы добиваемся прогресса? Какие-нибудь дополнительные предложения? – user3597113

+1

Попробуйте обновить код сейчас. – anubhava

+1

@anubhava Как всегда, впечатлило ваше знание Apache RewriteRule. Удивительный актив для сообщества! – JakeGould

Смежные вопросы