htaccess旧文件与.php新文件没有PHP

时间:2016-09-13 08:57:29

标签: php apache .htaccess codeigniter

大家好,我的问题是..
我正在研究codeigniter我正在重定向所有我在一个控制器家中的网址

在application / config / routes.php中使用此代码

$route['(.*)'] = "Home/index";

我想用不同的控制器运行的任何其他文件

我这样做

$route['test/get']="test/get";
$route['test/index']="test/index";

在路线文件的末尾,我添加了这一行

$route['(.*)'] = "Home/index";

在家庭控制器内部我处理所有网址....

一切都运转良好

我的.htaccess文件看起来像这样

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

现在我的问题是

我有旧网站http://www.example.com/

所有页面都是简单的php页面,如

http://www.example.com/one.php  
http://www.example.com/two.php  
http://www.example.com/three.php  

此代码在没有任何php框架的情况下运行

现在具有相同域http://www.example.com/的新网站
在没有.php扩展名的php框架codeigniter上运行

  http://www.example.com/one
  http://www.example.com/two  
  http://www.example.com/three

现在所有这些页面或网址都由一个控制器处理

现在我想要什么当用户在谷歌或任何其他搜索引擎中搜索时,他们发现了类似

的链接
http://www.example.com/one.php  

当他们点击此链接时...
我们应该将它们重定向到

http://www.example.com/one

我们怎么做呢

修改
我有子路由,所有子路由也从一个控制器

工作
  http://www.example.com/one/x/y
  http://www.example.com/two/p  
  http://www.example.com/three/q/r/s   

我想从网址末尾删除.php

2 个答案:

答案 0 :(得分:2)

在你的.htaccess文件中试试这个

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
希望它有所帮助...

答案 1 :(得分:1)

您可以在.php之前获取字符串,然后发送301重定向:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?([\w\/_\.-]*)\.php$ /$1 [L,R=301]

通过这种方式,您可以告诉搜索引擎更新系统中的链接以使用新链接,而不会丢失您构建的任何SEO声誉。

修改

RewriteCond %{REQUEST_FILENAME} \.php$

您需要将此RewriteCond添加到文件中以获取所有新的CodeIgniter路由。这将导致以下整体.htaccess文件。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule ^/?([\w\/_\.-]*)\.php$ /$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]