如何重定向此单页 /关于 至 /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,但无法找到解决问题的方法。
答案 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中的任何内容视为控制器,但无法弄清楚原因。
这看起来不像是一个正式的解决方案,但至少它使重定向工作得像预期的那样。