我已经尝试了几个小时但无法使其发挥作用。到处搜索答案,似乎没有什么能解决我的问题。
我甚至尝试过这里描述的解决方案:Remove index.php in codeigniter 2.1.0。一点也不运气。
我已将config ['index_page']设置为''。
我的.htaccess位于根文件夹(sys和app文件夹所在的位置)并且写成如下:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
但是,我可以访问我的控制器方法的唯一方法是使用url中的该死的index.php。 是的,我的apache conf启用了mod重写。
任何帮助都会非常好。
修改
我会添加更多信息,也许它是相关的。
答案 0 :(得分:3)
RewriteEngine On
RewriteBase /yourdirectoryname/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/ [L]
我没有ZendServer的经验,但是今晚我也在使用xampp(没有ZendServer)的localhost上遇到了这个问题,最后得到了它的工作:
答案 1 :(得分:1)
我没有使用代码点火器的经验,但如果我理解正确,你试图向用户提供像/index.php/my-page这样的东西,而不需要将index.php添加到它?
如果我是对的,你可以尝试这样的事情:
RewriteBase / # make sure we always rewrite from within the root directory
RewriteCond %{REQUEST_FILENAME} !-f # make sure the request is not to an existing file
RewriteCond %{REQUEST_FILENAME} !-d # nor an existing directory
RewriteCond %{REQUEST_FILENAME} !^index\.php # make sure we do only interpret requests that DO NOT start with index.php
RewriteRule ^(.*)$ index.php/$1 [L,QSA] # interpret request as if it were to index.php/...
# make sure we do only interpret requests that DO start with index.php
RewriteRule ^index\.php/(.*)$ $1 [L,R,QSA] # redirect user to new URL, which will be handled by the first rewriterule
请告诉我这是否有效
答案 2 :(得分:1)
尝试这个,我在任何地方的许多主机上使用过它,检查:
RewriteEngine On
RewriteBase /yoursitedirectory/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
如果没有,则转到config.php
文件并搜索此行:
|--------------------------------------------------------------------------
| URI PROTOCOL
|--------------------------------------------------------------------------
|
| This item determines which server global should be used to retrieve the
| URI string. The default setting of 'AUTO' works for most servers.
| If your links do not seem to work, try one of the other delicious flavors:
|
| 'AUTO' Default - auto detects
| 'PATH_INFO' Uses the PATH_INFO
| 'QUERY_STRING' Uses the QUERY_STRING
| 'REQUEST_URI' Uses the REQUEST_URI
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';
我使用AUTO
,但您可能需要将其切换为REQUEST_URI
或QUERY_STRING
,请尝试
答案 3 :(得分:0)
我终于设法解决了这个问题。感谢所有的答案,特别感谢@ddanurwenda。他的重写规则是解决我问题的唯一规则。
我忽略了一个Apache配置:我更改了这一行(来自httpd.conf):
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
以下内容:
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Satisfy all
</Directory>
该配置使我的htaccess文件无法被读取。
答案 4 :(得分:0)
这是我使用和工作的。 在.htaccess中使用此代码
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* website/index.php/$0 [PT,L]
确保.htaccess位于根文件夹中。 (即:xampp / htdocs)
然后在你的config.php(application \ config)中替换
config['index_page']='index.php'
至
config['index_page']=''
。