Php 使用Codeigniter使用htaccess进行自动重定向
我正在制作一个基于codeigniter的网站,但我遇到了一个问题 我在htaccess中使用了漂亮的URL: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
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?如果这个答案帮助您解决了问题,请考虑将其标记为“接受”,这样将来面对类似问题的用户将能够轻松地看到它。