我在codeigniter中开发了一个模块,URL为:
http://localhost/bwn/index.php/track/track/click
http://localhost/bwn/index.php/track/track/view
http://localhost/bwn/index.php/track/track/pass_thru
我还有一些在asp中开发的遗留应用程序,现在我需要重定向到我的新模块的URL数量,所以我希望下面3个链接应该重定向到我在CI中开发的新模块。
http://localhost/track/click_thru.asp
http://localhost/track/view_tracker.asp
http://localhost/track/pass_thru.asp
这可能在Codeigniter中,或者我应该在.htaccess中进行吗?
答案 0 :(得分:0)
原始PHP
header("Location: http://google.com, TRUE, 302");
CI
$this->output->set_header("Location: http://google.com, TRUE, 302");
答案 1 :(得分:0)
ASP和PHP完全分开。因此,您的codeigniter应用程序无法将.asp文件重定向到.php
在Codeigniter中,您可以在 routes.php 文件中重新路由网址。
例如 routes.php
$route['hello'] = "goodbye";
会将/hello
重新路由到goodbye
控制器。这是重新路由,而不是重定向。
您可以将控制器重定向到特定的URL。 (即Codeigniter - > ASP)。这是301重定向。
例如在您的控制器中
redirect('/track/pass_thru.asp', 'location', 301);
但是,codeigniter无法将您的asp文件重定向到codeigniter。
1)在您的原始.asp文件中,您可以创建重定向
e.g 的 /track/pass_thru.asp 强>:
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","/bwn/index.php/track/track/pass_thru"
%>
2)或者您可以通过.htaccess完成这些重定向
Redirect 301 /track/pass_thru.asp /bwn/index.php/track/track/pass_thru
答案 2 :(得分:0)
在route.php中
$route['default_controller'] = "home";
$route['404_override'] = 'errors';
和htaccess
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
rewriteRule ^(([a-z0-9\-]+/)*[a-z0-9\-]+)$ $1/ [NC,R=301,L]
这些更改和base_url的设置为我解决了这个问题
答案 3 :(得分:0)
我认为没有必要对routes.php或.htaccess文件进行更改,我们可以使用重定向方法重定向任何地方,只需要提供完整路径。
redirect('http://localhost/track/click_thru.asp');