2015-08-11 2 views
0

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

http://example.com/one/two/three/four 

Затем пользователи могут получить доступ к той же странице, с помощью любого из следующих действий:

http://example.com/one//two///three////four///// 
http://example.com/one/two////three/four///// 
http://example.com///one///////////two////three/four/ 
http://example.com///////////one///////////two/three/four 

Однако, я хочу, приведенный выше пример URLs для только перенаправлять пользователей по следующему адресу:

http://example.com/one/two/three/four 

Это мой файл .htaccess, чтобы попытаться остановить огромные косые черты:

RewriteCond %{ENV:REDIRECT_STATUS} !^$ 
RewriteRule .* - [L] 
RewriteRule ^(.*)/+$ /$1 [R=301,L,NC] 
RewriteCond %{REQUEST_URI} ^/+(.*)/+$ 
RewriteRule .* /%1 [R=301,L] 

Третья строка успешно останавливает трейлинг-косые черты на длинных URL-адресах. 4-я и 5-я строки - это моя попытка остановить косые черты сразу после имени домена, но это было неудачно.

Причина, по которой я задаю этот вопрос, заключается в том, что я не хочу, чтобы Google поймал меня за дублированный контент и с активным AdSense на сайте, Google, скорее всего, сканирует все URL-адреса, к которым я обращаюсь.

Есть ли комманда RewriteCond/RewriteRule, которую я могу использовать, чтобы удалить средние косые черты или более активно?

ответ

5

Вы можете использовать это правило для удаления нескольких слеши в любом месте URL:

RewriteCond %{THE_REQUEST} // 
RewriteRule ^.*$ $0 [R=302,L,NE] 
+0

Не только, что делать один набор только косой черты? Я хочу преобразовать ВСЕ группы из 2 или более косущих, склеенных вместе только в одну косую черту. – Mike

+1

Пожелание, которое вы испытали перед написанием этого комментария :) Это действительно удаление двух или более косых черт ** в любом месте ** в URL-адресе. В этом причина использования '$ 0', где Apache автоматически сжимает все' // 'в единый'/'. – anubhava

+1

, например. 'Https: // локальный /////////// один /////////// два ////////// три/четыре /////// 'будет 'https: // localhost/one/two/three/four /' в одном переадресации. – anubhava

0

Это работает для меня:

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ 
RewriteRule . %1/%2 [R=301,L] 

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

  • Нет связанных вопросов^_^