[英]Redirect the URL in Codeigniter
我在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中做到?
原始PHP
header("Location: http://google.com, TRUE, 302");
CI
$this->output->set_header("Location: http://google.com, TRUE, 302");
ASP和PHP完全分開。 因此,您的codeigniter應用程序將無法將.asp文件重定向到.php。
在Codeigniter中,您可以在route.php文件中重新路由URL。
例如在routes.php中
$route['hello'] = "goodbye";
會將/hello
重新路由到goodbye
控制器。 這是重新路由,而不是重定向。
您可以將控制器重定向到特定的URL。 (即Codeigniter-> ASP)。 這是301重定向。
例如在您的控制器中
redirect('/track/pass_thru.asp', 'location', 301);
但是,codeigniter無法將您的asp文件重定向到codeigniter。
1)在原始.asp文件中,您可以創建重定向
例如/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
在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的設置為我解決了這個問題
我認為不需要更改route.php或.htaccess文件,我們可以使用只需要提供完整路徑的重定向方法來重定向任何地方。
redirect('http://localhost/track/click_thru.asp');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.