.htaccess 301将www和非www重定向到假目录

.htaccess 301将www和非www重定向到假目录,.htaccess,redirect,http-status-code-301,.htaccess,Redirect,Http Status Code 301,如果用户尚未请求,我希望我的站点始终重定向到默认语言,即如果默认语言为英语,我希望将用户重定向到http://domain.com/english/当他/她进入时http://domain.com/ 同时,我想从URL中删除“www”部分,并通过重定向所有流量http://domain.com/index.php 我有下面的.htaccess文件,当用户进入www.domain.com时,该文件工作正常,但当用户进入domain.com时(不带“www”)该文件工作正常。我做错了什么 # # R

如果用户尚未请求,我希望我的站点始终重定向到默认语言,即如果默认语言为英语,我希望将用户重定向到http://domain.com/english/当他/她进入时http://domain.com/

同时,我想从URL中删除“www”部分,并通过重定向所有流量http://domain.com/index.php

我有下面的.htaccess文件,当用户进入www.domain.com时,该文件工作正常,但当用户进入domain.com时(不带“www”)该文件工作正常。我做错了什么

#
# Remove WWW from URL
#

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

#
# Redirect all traffic through index.php
#

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]
试一试

使用
使www成为可选的,以便第一条规则同时捕获这两条规则

编辑:

使用此规则删除www,然后使用index.php页面上的重定向转到/english/而不是url重写规则

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

我认为以下措施应该有效:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/english/$1 [R=301,L]
您的意思是,如果主机不完全是www.example.com,请重定向到它。

尝试以下操作:

# Remove WWW from URL and redirect to /english/
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [OR]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ http://example.com/english/$1 [R=301,L]

我从Firefox上得到了一个“页面没有正确重定向”的消息:/@josocblaugrana:的确如此。我的规则是让它不断重定向,现在我想起来了。我怎样才能在index.php上以一种SEO友好的方式重定向?对不起,不行。这样,“www”就不会重定向,如果没有“www”,我会从Firefox收到一个重定向错误。恐怕还是不行:/这不会从url中删除“www”。。。。如果我读对了你的帖子,会有所帮助的。:-)请按我现在的方式尝试。example.com(不带“www”)不会重定向。
# Remove WWW from URL and redirect to /english/
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [OR]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ http://example.com/english/$1 [R=301,L]