Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php .htaccess将非WWW重定向到保留URI字符串的WWW_Php_Apache_.htaccess_Mod Rewrite_Codeigniter - Fatal编程技术网

Php .htaccess将非WWW重定向到保留URI字符串的WWW

Php .htaccess将非WWW重定向到保留URI字符串的WWW,php,apache,.htaccess,mod-rewrite,codeigniter,Php,Apache,.htaccess,Mod Rewrite,Codeigniter,我正在运行CodeIgniter平台,它使用.htaccess来接受URL,如 http://www.mysite.com/controller/function/argument 我目前使用一些.htaccess重写,即(简化): 我想添加一个重写规则,将所有非www请求重定向到www。我还希望域名后面的URI字符串在重定向中保持不变。例如,如果用户请求http://mysite.com/controller/function/argument,我希望.htaccess文件在浏览器中将请求重

我正在运行CodeIgniter平台,它使用.htaccess来接受URL,如

http://www.mysite.com/controller/function/argument
我目前使用一些.htaccess重写,即(简化):


我想添加一个重写规则,将所有非www请求重定向到www。我还希望域名后面的URI字符串在重定向中保持不变。例如,如果用户请求
http://mysite.com/controller/function/argument
,我希望.htaccess文件在浏览器中将请求重写为
http://www.mysite.com/controller/function/argument
然后处理请求。

应该是这样的:

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

我有一个类似的问题,这个.htaccess对我有效

RewriteEngine On                           

#This bit rewrites your host name to include www
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,NC,L]

#This bit does the codeigniter magic
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*)$ /index.php/$1 [L]

如果您使用的是apache 2.4,则可以使用以下简单重定向:

<if "%{HTTP_HOST} =='example.com'">
Redirect / http://www.example.com/
</if>

重定向/http://www.example.com/

这不会影响我的第二条重写规则,对吗?我理解您的重写条件,我不想应用到我已有的规则中。如果您将我的规则添加为第一个规则,则仅当主机不是www.mysite.com时才会激活该规则。如果它被激活,将有一个重定向HTTP,如果条件满足,第二个HTTP查询将激活您自己的重写met@Steven徐,重写条件只适用于下一个立即重写规则。它起作用了。如果我想添加规则,但blog.example.com没有重定向到www怎么办?试试
RewriteCond%{HTTP_HOST}^(www| blog)\.example\.com[NC]
<if "%{HTTP_HOST} =='example.com'">
Redirect / http://www.example.com/
</if>