2013-05-29 2 views
0

У меня есть сайт с форумом, и вот текущее правило переписывают в моем файле Htaccess:Dynamic 301 .htaccess Redirect/Rewrite

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^.*/?forum/?(.*)$ /forum.php [L] 

Теперь, из-за того, что у меня есть URL-адресов индексируются Google, как:

www.domain.com/abc/forum/rest-of-url 
www.domain.com/defg/forum/rest-of-url 
www.domain.com/something-else/forum/rest-of-url 

и все ссылки показывают ту же страницу, которая должна быть доступ только:

www.domain.com/forum/rest-of-url 

без у слов (азбука, DEFG и т.д.) между доменом/и/Форум/

В принципе ничего, как по этой ссылке:

www.domain.com/abc/forum/rest-of-url 

должно быть 301 редирект:

www.domain.com/forum/rest-of-url 

Я попытался изменить правило перезаписи:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule /forum/?(.*)$ /forum.php [L] 

Но затем я получаю много 404 ошибок в инструментах Google для веб-мастеров для всех ранее индексированные URL-адреса, поэтому я думаю, что есть работа с 301 перенаправлением, но я не понял, как избежать перехода в цикл.

Любая помощь приветствуется. Благодаря

ответ

0

Включение mod_rewrite и .htaccess через httpd.conf, а затем поместить этот код в каталоге .htaccess под DOCUMENT_ROOT:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

# redirect any /foo/forum/index to /forum/index 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^[^/]+/(forum/[^/]+/?)$ /$1 [L,R=301,NC] 

После того, как вы убедитесь, что он работает нормально, замените R=302 на R=301. Избегайте использования R=301 (Перманентный переадресация) при тестировании ваших правил mod_rewrite.

+0

Извините, индексная часть является динамической: www.domain.com/something-else/forum/index может быть www.domain.com/forum/someting-else –

+0

Хорошо отредактировано, попробуйте сейчас. – anubhava