我正在使用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
没有工作
<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
如何重新编写锚定cms的指令
.htaccess – RewriteCond:坏标志分隔符
重写域和path
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 举报,一经查实,本站将立刻删除。