CodeIgniter路由

时间:2010-01-03 06:40:20

标签: php regex codeigniter routing

我正在尝试使用CI构建一个短URI服务,这样我就可以更快地学习CI 无论如何..我被困在路由 我隐藏了index.php,然后添加了以下路由$route['([A-z0-9]{4})'] = "/forward/redirect/$1";

但它只显示我的默认控制器

我也试过HTaccess

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-z0-9]{4})$ /forward/redirect/$1 [NC]

没有任何传递数据会出错 任何帮助表示赞赏。 干杯

2 个答案:

答案 0 :(得分:2)

由于没有物理路径/forward/redirect/,您应该重定向到根目录中的“catch all”index.php文件并输入路径作为参数:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-z0-9]{4})$ /index.php/forward/redirect/$1 [NC]

或者您可以按原样保留规则并附加另一个规则(这样您将有两个重写周期,第一个将重写为/forward/redirect/asdf,然后第二个重写为index.php/forward/redirect/asdf:< / p>

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-z0-9]{4})$ /forward/redirect/$1 [NC]
RewriteRule ^(.*)$ index.php/$1 [QSA,L]

答案 1 :(得分:1)

我终于让它工作&gt; _&gt;

路由文件包含此

$route['([A-z0-9]{4})'] = "/forward/redirect/$1";

htaccess包含此

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*) http://%1/$1 [R=301]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-z0-9]{4})$ index.php/forward/redirect/?$1 [NC]
RewriteCond $1 !^(index\.php|images|robots\.txt|(.*).js|(.*).css|(.*).jpg|(.*).png)
//added (.*) so resources could be loaded properly :)
RewriteRule ^(.*)$ /index.php/$1 [L]