我努力(因为托管公司,godaddy)在完成此操作后从我网站的网址中删除index.php?
。
之后我注意到有些用户使用旧网址(index.php?/
)来访问我的网站
因此,我尝试使用 301 重定向重定向来自index.php?
个网页的用户,但没有运气。
我在互联网上搜索了一下,
但我认为问题背后的原因是我需要它从所有网址重定向
已包含index.php?/
至example.com
或同一页面请求,但未包含index.php?/
(首选)。
例如:请求example.com/index.php?/site/category/etc
将导致example.com
或example.com/site/category/etc
(首选方法)。
任何其他URL都将被视为相同。
这是我当前的.htaccess
文件(与此问题无关):
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
更新:
尝试php解决方案:(归功于Robin Castlin)
我尝试使用钩子(根据答案),但没有奏效!
我从配置中启用hooks
并且URL
帮助程序已自动加载
此函数位于application/hooks/MY_hooks.php
:
function redirectToNewURL(){
if(preg_match('~/index.php?/~', $_SERVER['REQUEST_URI'])) {//check if the URL has index.php
header('Location: '.current_url(), true, 301); //redirect
exit;
}
}
我如何设置钩子:
来自application/config/hooks.php
我把这个简单的数组:
$hook['pre_controller'] = array(
'class' => '',
'function' => 'redirectToNewURL',
'filename' => 'MY_hooks.php',
'filepath' => 'hooks'
);
最终,我没有结果。
答案 0 :(得分:1)
$CI =& get_instance();
$CI->load->helper('url');
if (preg_match("~/index\.php\?/~", $_SERVER['REQUEST_URI'])) {
header('Location: '.current_url());
exit;
}
将它添加到钩子或自动加载的助手应该这样做。