微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CodeIgniter删除index.php不工作

我正在使用Ubuntu 13以下设置为本地代码的网站。

Apache/2.4.6 (Ubuntu) 5.5.3-1ubuntu2.2 'CI_VERSION','2.1.2'

如果没有index.PHP ,url将不再工作。 他们曾经工作,但过去一年从Ubuntu 12.x升级到13.x和几个Apache更新后, localhost网站不再正常工作。

如果我去localhost/index.PHP/controllername/它的作品,但如果我去本地主机/控制器名称/它不。

mod_rewrite已启用。

我可以禁用特定目录的重写吗?

使用参数redirect到主页url

ProxyPass和ProxyPassReverse可以在htaccess中工作吗?

htaccess重写真实的目录path到一个不同的,不存在的url,隐藏真正的path

在.htaccess中设置一个环境variables并在PHP中检索它

CodeIgniterconfiguration有:

$config['index_page'] = ''; $config['uri_protocol'] = 'AUTO'; // tried all available options here and

没有工作

在域的.conf文件我有这个:

<Directory /> Options -Multiviews +FollowSymLinks AllowOverride All </Directory>

这里的.htaccess文件注释行是我尝试过,没有工作。

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # RewriteCond $1 !^(index.PHP|robots.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.PHP?/$1 [L] # RewriteRule .* index.PHP/$0 [PT,L] # RewriteRule ^(.*)$ index.PHP/$1 [L,QSA] </IfModule> <IfModule !mod_rewrite.c> ErrorDocument 404 /index.PHP </IfModule>

我谷歌search了一切,我可以find并尝试了一切,我可以find包括堆栈溢出几个职位,包括在“问题,可能已经有你的答案”。仍然没有任何工作。 但正如我所说,这是过去的工作,但只有多次更新操作系统和Apache后,我第一次注意到它停止工作。

我将从未来的项目中移出CodeIgniter,但这些项目已经存在。 可能是什么问题受到了挫折。

解:

事实certificate,这不是一个代码问题。 这是一个Apache的问题,但没有重写规则。 在我的apache2.conf中,我不得不改变/ var / www /

要求所有授予似乎已经做了伎俩。

DirectoryIndex index.PHP index.html选项索引FollowSymLinks AllowOverride全部需要全部授予

只是为了好的措施,我也在这里做了改变:选项FollowSymLinks AllowOverride All要求所有授予

findaskubuntu https://askubuntu.com/questions/421233/enabling-htaccess-file-to-rewrite-path-not-working

自定义404错误页面 – 仅适用于PHP页面

如何重新编写锚定cms的指令

.htaccess – RewriteCond:坏标志分隔符

重写域和path

拒绝所有文件,但索引/页面与htaccess

将以下代码复制到根文件夹中的.htaccess

RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.PHP/$0 [PT,L] Options All -Indexes

这对我在CodeIgniter中删除index.PHP工作正常。

CodeIgniter似乎没有认的.htaccess ,所以不清楚它来自哪里。 但为了调试的目的,我建议你做下面的事情。 首先,这里是你的.htaccess全部清理完毕:

<Ifmodulee mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.PHP?/$1 [L] </Ifmodulee>

现在用这个替换你的index.PHP 。 它只是转储通过.htaccess传递的$_GET值,如下所示:

echo '<pre>'; print_r($_GET); echo '</pre>';

现在在你的.htaccess加载相关网站/ app /项目的索引页面输出应该是这样的:

Array ( [/controllername/here/] => )

这似乎是正确的。 但是,再一次,你会比我们更清楚。

这样做的目的是为了评估问题是否在Apache中将正确的$_GET值传递给CodeIgniter设置,这是一个问题。 或者问题是否在你的CodeIgniter控制器逻辑本身。

我的直觉告诉我,问题出在你的代码库中的CodeIgniter逻辑上,因为从Ubuntu 12.x升级到Ubuntu 13.x包括从Ubuntu 12.x版本5.3到Ubuntu 13.x版本5.5的升级版本。 我使用了很多在PHP 5.3和PHP 5.4中工作的代码,但在PHP 5.5中有时会中断,因为代码库中的重大更改会导致代码中断,如果不保留在非折旧函数之上。

我会尝试像这样的:

RewriteRule ^(?!index)(.*)$ index.PHP?/myvariable=$1 [L]

如果您知道脚本在localhost/controllername对controllername所期望的GET变量,则在规则myvariable替换myvariable变量名称

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐