2015-05-09 8 views
1

Я пытаюсь перенаправить www-адреса на не-www для моего форума. Мой форум установлен в подкаталог под названием «форум». В моем корневом каталоге у меня установлен WordPress. Для WordPress в моем корневом каталоге перенаправление .htaccess работает нормально, но у меня возникают проблемы с его работой на моем форуме.redirect www to non-www

Я пробовал пару правил, которые я нашел в поиске Google, но они не сработали.

Я также проверил эту тему Generic htaccess redirect www to non-www

, но в моем случае файл Htaccess находится в подкаталоге, а не в корне.

Возможно, что я делаю что-то неправильно, так вот весь мой файл .htaccess:

# Mod_security can interfere with uploading of content such as attachments. If you 
# cannot attach files, remove the "#" from the lines below. 
#<IfModule mod_security.c> 
# SecFilterEngine Off 
# SecFilterScanPOST Off 
#</IfModule> 

ErrorDocument 401 default 
ErrorDocument 403 default 
ErrorDocument 404 default 
ErrorDocument 405 default 
ErrorDocument 406 default 
ErrorDocument 500 default 
ErrorDocument 501 default 
ErrorDocument 503 default 

<IfModule mod_rewrite.c> 
RewriteEngine On 

# If you are having problems with the rewrite rules, remove the "#" from the 
# line that begins "RewriteBase" below. You will also have to change the path 
# of the rewrite to reflect the path to your XenForo installation. 
RewriteBase /forum 
RewriteCond %{HTTP_HOST} www.example.com$ 
RewriteRule ^(.*)$ http://example.com/forum$1 [R=301,L] 


# This line may be needed to enable WebDAV editing with PHP as a CGI. 
#RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 


</IfModule> 

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

+0

Возможный дубликат [Generic htaccess перенаправить www на не-www] (http://stackoverflow.com/questions/234723/generic-htaccess-redirect-www-to-non-www) – DACrosby

ответ

1

Вы должны заменить правило www удаления с этим одним:

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

Убедитесь, чтобы проверить это в новом браузере чтобы избежать использования старого кеша.

+1

Спасибо! Работает как шарм :) – Tom

+0

Почему этот рабочий и другой ответ нет? –

+0

Соответствие '. *' В 'RewriteRule' относится к родительскому каталогу .htaccess. В то время как '% {REQUEST_URI}' всегда полный путь от 'DocumentRoot'. – anubhava

1

Поместите этот код в ваш файл .htaccess:

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
+0

Спасибо за быстрый ответ, но он не работает, к сожалению. Это дает мне 404 ошибки. – Tom

+1

Попробуйте очистить весь файл .htacces и поместите именно этот код. В вашем примере было несколько перенаправлений на www.example.com. Я использовал это правило Rewrite несколько раз, и он всегда работал для меня. @Tom –

+0

Извините, по-прежнему не работает. – Tom

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