大家好,我的问题是..
我正在研究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]
现在我的问题是
所有页面都是简单的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
答案 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]