我正在尝试使用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]
没有任何传递数据会出错 任何帮助表示赞赏。 干杯
答案 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]