例如:
- index.php
- /system
- /application
- /controller
- test.php (class:test ; function index() ; echo "hi")
- /public
- style.css
我将浏览器指向http://mysite.com/,它会显示“hi”
如果我想要style.css,我必须指向http://mysite.com/public/style.css
但我想点http://mysite.com/style.css也可以显示style.css
我尝试在系统和应用程序
之前将index.php移动到public add prefix ../我也在根目录中设置了一个htaccess,然后我可以成功地为http://mysite.com/style.css指向style.css
但还有另一个问题,我不能再指向我的测试控制器,它显示错误404
如何保留两个网址?
更新
root目录中的htaccess:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^public/.+$ - [L]
RewriteCond %{DOCUMENT_ROOT}/public/$0 -f
RewriteRule ^.+$ /public/$0 [L]
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
当我访问http://mysite.com/style.css时可以显示style.css
但是控制器测试不起作用,我访问http://mysite.com/test/test/index显示404而不是“hi”
答案 0 :(得分:1)
如果请求的文件来自公共目录
,则可以使用RewriteCond
进行测试
# prevent requests for the public directory from being rewritten
RewriteRule ^public/.+$ - [L]
RewriteCond %{DOCUMENT_ROOT}/public/$0 -f
RewriteRule ^.+$ /public/$0 [L]
您必须在Codeigniter规则之前插入此规则,否则该文件可能会被重写为/index.php/...
。
<强>更新强>:
首先,您必须忽略RewriteCond !-f/!-d
。
test/index
的网址必须为http://mysite.com/test/index
或http://mysite.com/test
。