htaccess 301 перенаправляет www & non-www в подпапку без www - PullRequest
2 голосов
/ 17 апреля 2011

Я пытаюсь перенаправить www и non-www во вложенную папку без www /forums.

В настоящее время я использую этот код:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [OR]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ http://example.com/forums/$1 [R=301,L]

Работает хорошо, но естьЕсть некоторые проблемы с этим.

Если я наберу URL: example.com, это приведет меня к example.com/forums.-OK

Если я наберу URL: example.com/test, я попаду на example.com/test.-OK

Если я наберу URL: www.example.com, это приведет меня к example.com/forums.-OK

Если я наберу URL-адрес: www.example.com/test, это приведет меня к example.com/forums/test.-WRONG

Как я могу исправить возникшую ошибку для www.example.com/test?

Я хочу, чтобы www.example.com/test привел к example.com/test.

Пожалуйста, помогите мне, спасибо!

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

Попробуйте следующее правило в вашем файле .htaccess:

RewriteEngine on
Options +FollowSymlinks -MultiViews

# redirect empty URL to /forums
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^$ http://example.com/forums [R=301,L]

# non forums handler
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/forums [NC]
RewriteRule ^(.+)$ http://example.com/$1 [R=301,L]
0 голосов
/ 17 апреля 2011

Если у вас нет других поддоменов, указывающих на тот же каталог (или не имеет значения, что они также перенаправлены), вы можете просто попробовать это:

RewriteEngine On
RewriteRule ^$ /forums/ [R=301,L]

Это перенаправляет любые запросы на www.example.com/ и example.com/ во вложенную папку / форумы / и оставляет все остальные запросы без изменений.

Предполагая, что ваши данные тесты являются единственными для рассмотрения, тогда это должно сработать. Если у вас есть какие-либо дополнительные случаи, тогда может потребоваться расширить правило (я).

...