Php 使用Codeigniter使用htaccess进行自动重定向

Php 使用Codeigniter使用htaccess进行自动重定向,php,apache,.htaccess,codeigniter,redirect,Php,Apache,.htaccess,Codeigniter,Redirect,我正在制作一个基于codeigniter的网站,但我遇到了一个问题 我在htaccess中使用了漂亮的URL: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L] 一切正常,但现在我想重定向所有URL,如: -site.com/reg -site.com/faq -等等。 致: -site.co

我正在制作一个基于codeigniter的网站,但我遇到了一个问题

我在htaccess中使用了漂亮的URL:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
一切正常,但现在我想重定向所有URL,如: -site.com/reg -site.com/faq -等等。 致: -site.com/it/reg -site.com/it/faq -等等

我尝试了很多次这样做,但只使用environment_status作为rewritecond查看结果,但它只将site.com重定向到site.com/it,而没有重定向site.com/reg等URL

如果没有rewritecond的环境状态,我总是得到一个无限的重定向循环。 有什么解决办法吗

编辑: 配合

RewriteRule ^(reg|faq)/?$ /it/$1 [L,NC,R]
但是有没有一种方法可以不使用上面的“白名单”和重定向循环而将/it/放在每个请求的uri之前?(我试过放。*但有循环)

已解决:

RewriteRule !^(it|index\.php) /it%{REQUEST_URI} [L,R]

感谢您的解决方案:

您的规则如下:

RewriteEngine on

RewriteRule !^(it|index\.php) /it%{REQUEST_URI} [L,R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php?/$1 [L]

你的规则是这样的:

RewriteEngine on

RewriteRule !^(it|index\.php) /it%{REQUEST_URI} [L,R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php?/$1 [L]

可以帮助您了解
.htaccess
内容。可以帮助您了解
.htaccess
内容。回答得好。你也可以使用通配符
RewriteRule^(.*)/?$/it/$1
,这样它可以处理所有问题,而不仅仅是“faq”和“reg”。我不是OP。我只是在你的答案中添加了:)通配符有一个重定向循环哦,很抱歉混淆了@USER 28 8955:您希望所有的东西都重定向到<代码> /IT/<代码>或仅选择URI,如FAQ、Reg等?如果这个答案帮助您解决您的问题,请考虑将其标记为“接受”,这样将来面对类似问题的用户将能够轻松地看到它。好答案。你也可以使用通配符
RewriteRule^(.*)/?$/it/$1
,这样它可以处理所有问题,而不仅仅是“faq”和“reg”。我不是OP。我只是在你的答案中添加了:)通配符有一个重定向循环哦,很抱歉混淆了@USER 28 8955:您希望所有的东西都被重定向到<代码> /IT/<代码>,还是只选择了类似于FAQ、Reg等的URI?如果这个答案帮助您解决了问题,请考虑将其标记为“接受”,这样将来面对类似问题的用户将能够轻松地看到它。