所以我正在使用 .htaccess 在我的 codeigniter 应用程序中拥有干净的 URL。
简而言之,我正在尝试:
1) 删除 urls 中的 index.php(永久重定向)
http://localhost/directory/index.php*
to
http://localhost/directory/*
http://my.domain.com/index.php*
to
http://my.domain.com/*
2) 将某些控制器的请求重写为index.php/[controller_name]
http://localhost/directory/controller1*
to
http://localhost/directory/index.php/controller1*
http://my.domain.com/controller2*
to
http://my.domain.com/index.php/controller2*
我的 htaccess 文件目前是这样的:
Options +FollowSymlinks
RewriteEngine On
#RewriteBase /
# Redirect index.php
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{THE_REQUEST} !/system/.*
RewriteRule ^(.*)index\.php((/)(.*))?$ /$1/$4 [R=301,L]
第一个问题:
这不适用于http://localhost/dir/index.php/controller1
. 而是重定向到http://localhost/dir/controller1
,它重定向到http://localhost//controller1
($1
返回空字符串?)
# Rewrite CI certain controllers
RewriteCond %{THE_REQUEST} directory/(home|other_controller) [NC]
RewriteRule ^(.*)(home|other_controller)(.*)$ /$1index.php/$2$3 [NC,L]
第二个问题:
这不适用于http://localhost/dir/home
给出内部服务器错误(重定向太多)。但如果我测试添加R=301
的代码,它会成功重定向到http://localhost/dir/index.php/home
. 但这不是我要重定向的意图,我只需要重写它。
请指教.. :)