簡體   English   中英

重定向Codeigniter中的URL

[英]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-> codeigniter

在Codeigniter中,您可以在route.php文件中重新路由URL。

例如在routes.php中

$route['hello'] = "goodbye";

會將/hello重新路由到goodbye控制器。 這是重新路由,而不是重定向。

Codeigniter-> ASP

您可以將控制器重定向到特定的URL。 (即Codeigniter-> ASP)。 這是301重定向。

例如在您的控制器中

redirect('/track/pass_thru.asp', 'location', 301);

但是,codeigniter無法將您的asp文件重定向到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM