如何使用.htaccess重定向/关于/foo/index.php/pages/about?

时间:2016-10-13 06:45:48

标签: apache .htaccess codeigniter redirect mod-rewrite

如何重定向此单页 /关于 至 /foo/index.php/pages/about ,而不是在浏览器中更改网址?

这有效:

RewriteRule "^about$" "/foo/index.php/pages/about" [R]

但它改变了浏览器中的URL,这不是我需要的。

我试着写这个:

RewriteRule "^about$" "/foo/index.php/pages/about"

RewriteRule "^about$" "/foo/index.php/pages/about" [QSA]

RewriteRule "^about$" "/foo/index.php/pages/about" [QSD]

但所有这些都会显示" 404 Page Not Found"来自CodeIgniter的页面(不是Apache的默认页面)。 此外,CodeIgniter的错误日志显示" 404找不到页面:关于/索引"。

看起来它被重定向到/foo/index.php/about,但无法找到解决问题的方法。

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。

.htaccess中,添加以下规则:

RewriteRule ^about$ /foo/index.php

在CodeIgniter的routes.php中,添加此路线:

$route['about'] = 'pages/about';

访问/about将被重定向到/foo/index.php,然后CodeIgniter会将网址中的about视为控制器,并路由到pages/about/foo/index.php/pages/about通常可以从index.php访问{1}}。

似乎CodeIgniter忽略了RewriteRule中{{1}}之后的任何内容,并将实际url中的任何内容视为控制器,但无法弄清楚原因。

这看起来不像是一个正式的解决方案,但至少它使重定向工作得像预期的那样。