301重定向与codeIgniter旧网页的网站(301 redirect for old pages of the website with codeIgniter)

   IT问题网   2018-08-01 00:00:00

问 题

我刚刚升级现在我的静态网站到codeigniter启用的网站之一。我需要把旧网站的准确域名重定向到新的,以避免404错误。

  • 在旧页>http://example.com/pagename.php
  • 新页>http://example.com/index.php/home/category_images/9(cat_id)

我不很高的没有。的网页,以便硬编码的所有页直接将不会是一个问题。我曾尝试:

rewriteengine叙述上
的rewritebase /
重写规则^的http://www.example.com/pagename.php$ http://example.com/index.php/home/category_images/9 [l,r = 301]
 

不工作,我不知道为什么。 的mod_rewrite 是让我的apache服务器上。

此外,只为确认也请告诉我在哪个文件夹我应该把这个文件,我感到困惑的根目录或应用程序文件夹之间。

感谢你。

2版:现在从迈克尔先生的建议后,我试图用实现像这样的重定向功能:

默认的控制器功能:home.php

 函数__construct()
{
//调用模型构造
父:: __结构();
$这个 - 负载模型('common_model');
$这个 -  handle_redirects();
}

功能handle_redirects()
{
$重定向=阵列(
"华丽-girls.php'=家/ category_images / 9'
);
$ uri =破灭('/',$这个 -  uri的段);
的foreach($重定向为$从= $到)
{
从$ = str_replace函数(':任何",str_replace函数('+'':num','[0-9] +',从$));
如果(preg_match("#^ {$从} $#我",$ uri))
{
如果(strpos($到,'$')!== false并且strpos($的,'(')!= false)
$为= preg_replace("#^ {$从} $#我",$到,$ uri);
重定向($到,"位置",301);
}
}
}
 

和我的.htaccess如下:

rewriteengine叙述上
的rewritebase /
的rewritecond $ l ^(index.php文件|资源| robots.txt的)!
的rewritecond%{} request_filename!-f
的rewritecond%{} request_filename!-d
重写规则^(。*)$ /index.php/$1 [l]
 

ps:我已经从我的域名结构中删除的index.php。它看起来像:www.example.com/controller/function/uri/uri

现在我没有得到一个错误页面,从我的主人,但我从codeigniter得到一个错误页面。

请帮忙。

解决方案

考虑到你的超文本文件的访问应该通过 被路由一切的index.php反正,最好是用处理您重定向codeigniter的 重定向() 的功能。

这是例子,下面提供的基础上,我有我的页面的控制器,在我自己的框架扩展(它可用于任何地方在 重定向( ) 的功能是可用的,以及$这个 - uri的部分

 函数handle_redirects(){
$重定向=阵列(
"pagename.php'=家/ category_images / 9'
);
$ uri =破灭('/',$这个 -  uri的段);
的foreach($重定向为$从= $到)
{
从$ = str_replace函数(':任何",str_replace函数('+'':num','[0-9] +',从$));
如果(preg_match("#^ {$从} $#我",$ uri))
{
如果(strpos($到,'$')!== false并且strpos($的,'(')!= false)
$为= preg_replace("#^ {$从} $#我",$到,$ uri);
重定向($到,"位置",301);
}
}
}
 

如果你要查询传递到您的pagename.php在你的框架文件,你可以考虑以下(请注意,我做不知道你的网页的本意是 - 这是一个通用的解决方案):

$重定向=阵列(
'?pagename.php q =(:任何)'=家/ category_images / $ 1'
);
 

例如:

http://example.com/pagename.phpq=9
 

将您重定向到:

http://example.com/home/category_images/9
 

该解决方案的工作对我来说相当不错,而且是非常有效的,当涉及到跨浏览器兼容。

请注意,您的规则集应该是这样的,或类似的东西吧:

rewriteengine叙述上
的rewritebase /
的rewritecond%{} request_filename -f
重写规则(xml | txt | css | js | jpg | png | gif)$-[l]
重写规则。*的index.php [l,qsa]
 

修改:以上已被更改,以适应资产。基本上,它告诉apache路由一切通过的index.php ,除非它是存在,并有指定的扩展名的文件。 (这是出于安全方面的良好做法。)

修改:请注意,您应该不包括的index.php 在您的网址,因为它正在被剥离的.htaccess 文件反正。

请注意,我用php 5.3- 虽然这个解决方案应该为你工作。请让我知道,如果有任何问题。

标签:定向网页网站



分享:

  • 微信
  • QQ好友
  • QQ空间
  • 新浪微博


热门推荐

问题与MIME类型和服务SVG:资源跨$ PTED为图像,但MIME类型文本传输p $ / XML(Issue with MIME types and serving svg: Resource interpreted as Image but transferred with MIME type text/xml)

problem i'm targeting some svg images with css to use as ...

htaccess的只接受来自特定HTTP_REFERER交通(htaccess only accept traffic from specific http_referer)

problem i'm trying to set up a htaccess file that would a ...

正确的正则表达式的.htaccess内部重定向和URL缩短(Proper regex for .htaccess internal redirect and url shortening)

problem based on this thread:proper regex for .htaccess r ...

htaccess的国防部重写正则表达式不匹配文件名(.htaccess mod rewrite regex to not match file names)

problem i am using the following .htaccess co ...

重定向PHP页面来使用301的.htaccess另一个PHP页面(Redirect php page to another php page using 301 .htaccess)

problem i have a dynamic page that i need to ...

重定向%{QUERY_STRING}以友好的URL(Redirecting %{QUERY_STRING} to friendly url)

problem i'm trying to add one last improvement (regarding ...

找不到404页面错误(404 page not found error)

problem i am using a wamp server and i need to change the ...

重写规则从路径中删除一个文件夹,并保持目录结构的其他部分(rewrite rule to remove a folder from a path and keep rest of directory structure)

problem in my base directory i have a lot of folders. i w ...

相互理解PHP 404重定向与无效的GET请求(Understandin PHP 404 redirection related to invalid get request)

problem ok, am using traditional php, no fram ...

在HTML页面中嵌入PHP在Windows webmatrix2服务器(embed php in html page in windows webmatrix2 server)

problem i am trying to embed php code in my html pages on ...

htaccess的重定向与规则(htaccess redirect with on rule)

problem how to write one rule what would sati ...

htaccess的URL路径选择子目录(.htaccess url routing subdirectory)

problem i have read at least 100 posts about .htaccess an ...

隐藏HTML扩展+重定向的.html版本+特殊情况例外(hide html extension + redirect .html version + special case exception)

problem i have a hard time understanding htac ...

GET参数用干净的URL在多主机环境(get params with clean url in multi hosting environment)

problem the website root contains three direc ...

htaccess的更换空间的网址和重定向(htaccess to replace space in url and redirect)

problem i am newbie and want to solve a problem. i read s ...

现代重写是给我一个困难时期(Mod Rewrite is giving me a hard time)

problem i'm currently using wamp on windows 7. i'd like t ...

解析巴布亚新几内亚通过htaccess的PHP仅适用于本地服务器,但不是在网络服务器(Parsing PNG as PHP via htaccess works only on local server but not on webserver)

problem i have created a dynamic png-picture in php. in o ...

htaccess的:重定向仅.html文件到网站根目录(htaccess: redirect only .html files to website root)

problem i've recently upgraded a static site to a cms and ...

Apache的.htaccess中的AddHandler Conditionnal的服务器名或IP(Apache HtAccess AddHandler Conditionnal on servername or ip)

problem i'm hosting my staging and production servers at ...

URL重写:如何改写2网址与参数相同的号码?(url rewriting : How to rewrite 2 urls with same number of parameters)

problem i've created some url rewriting rules. it works ...