Php 生产时,Codigniter htaccess错误404
我对服务器技术非常了解。我知道这个问题问了太多次,但我真的没有把它运行起来。 它与Php 生产时,Codigniter htaccess错误404,php,apache,.htaccess,codeigniter,mod-rewrite,Php,Apache,.htaccess,Codeigniter,Mod Rewrite,我对服务器技术非常了解。我知道这个问题问了太多次,但我真的没有把它运行起来。 它与domain.com/2.0/index.php/test一起运行但是当您删除index.php时,它会抛出 在此服务器上找不到请求的URL/2.0/test。 位于domain.com端口443的Apache/2.2.15(CentOS)服务器 我的项目结构 - 公共网页 --2.0(这是可以找到ci的我的项目文件夹。它有sys、app、.htaccess) --.htaccess 我的域名 关于这个问题 我
domain.com/2.0/index.php/test一起运行
但是当您删除index.php时,它会抛出 在此服务器上找不到请求的URL/2.0/test。 位于domain.com端口443的Apache/2.2.15(CentOS)服务器 我的项目结构
-
公共网页
--2.0(这是可以找到ci的我的项目文件夹。它有sys、app、.htaccess)
--.htaccess
我的域名
关于这个问题
我有两个htaccess,一个在根目录中,一个在2.0文件夹中 奇怪的是,我在htaccess文件中所写的内容从来不会产生任何影响 public_html/.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
我的httpd.conf
<VirtualHost *:443>
ServerAdmin info@domain.com
DocumentRoot /home/natural/public_html
ServerName api01.domain.net
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/access_log common
SSLEngine on
SSLCertificateFile /home/natural/api01.domain.net.crt
SSLCertificateKeyFile /home/natural/api01.domoin.key
<Directory />
Options Indexes FollowSymLinks
Allow from all
AllowOverride None
</Directory>
</VirtualHost>
服务器管理员info@domain.com
DocumentRoot/home/natural/public\u html
ServerName api01.domain.net
ErrorLog/var/log/httpd/error\u log
自定义日志/var/log/access\u日志公用
斯伦金安
SSLCertificateFile/home/natural/api01.domain.net.crt
SSLCertificateKeyFile/home/natural/api01.domoin.key
选项索引跟随符号链接
通融
不允许超限
我搜索了很多,并通过堆栈溢出跟踪所有答案,但没有运气。httpd.conf中的指令“AllowOverride None”将禁用指定目录内的.htaccess文件的解析(在本例中为/)--您能否确认.htaccess文件中的任何一个确实正在解析
如果没有,是否将httpd.conf文件中的目录子节修改为:
<Directory />
Options Indexes FollowSymLinks
Allow from all
AllowOverride All
</Directory>
选项索引跟随符号链接
通融
允许超越所有
解决问题
有关详细信息:httpd.conf中的指令“AllowOverride None”将禁用对指定目录中的.htaccess文件的解析(在本例中为/)--您能否确认.htaccess文件中的任何一个实际上正在被解析
如果没有,是否将httpd.conf文件中的目录子节修改为:
<Directory />
Options Indexes FollowSymLinks
Allow from all
AllowOverride All
</Directory>
选项索引跟随符号链接
通融
允许超越所有
解决问题
有关更多信息:我假设2.0是该站点的新版本。它看起来像是
/2.0/.htaccess
被编写成希望位于根文件夹中。在引擎打开后尝试添加RewriteBase/2.0/
。您可以在以后将根文件夹的内容替换为2.0
的内容时删除它
主要问题是您的#手柄前控制器…
规则。它将在任何虚拟URL进入2.0
文件夹之前捕获它们。尝试将其更改为:
RewriteRule ^(?!2\.0(?:/|$)) index.php [L]
这将从当前站点的虚拟URL中排除2.0
文件夹
按照另一个答案的建议,您仍然需要
AllowOverride all
,目录应该与您的DocumentRoot
相同,而不是/
,我假设2.0是站点的新版本。它看起来像是/2.0/.htaccess
被编写成希望位于根文件夹中。在引擎打开后尝试添加RewriteBase/2.0/
。您可以在以后将根文件夹的内容替换为2.0
的内容时删除它
主要问题是您的#手柄前控制器…
规则。它将在任何虚拟URL进入2.0
文件夹之前捕获它们。尝试将其更改为:
RewriteRule ^(?!2\.0(?:/|$)) index.php [L]
这将从当前站点的虚拟URL中排除2.0
文件夹
按照另一个答案的建议,您仍然需要
AllowOverride all
,目录应该与文档根目录相同,而不是/
在root->.htaccess文件中添加此代码
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
RewriteRule ^(?!2\.0(?:/|$)) index.php [L]
在root->.htaccess文件中添加此代码
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
RewriteRule ^(?!2\.0(?:/|$)) index.php [L]
请更新问题以包含这些.htaccess文件的内容。答案可能是将重写条件添加到根目录中,以排除2.0文件夹下的所有内容。或者甚至将两个文件合并为一个。我更新了问题,添加了我的两个htaccessadd文件夹图像structure@AbdulManan您的项目是否在2.0中?添加clear image with application文件夹和allPlease更新问题以包含这些.htaccess文件的内容。答案可能是将重写条件添加到根目录中,以排除2.0文件夹下的所有内容。或者甚至将两个文件合并为一个。我更新了问题,添加了我的两个htaccessadd文件夹图像structure@AbdulManan您的项目是否在2.0中?添加清晰的图像与应用文件夹和所有感谢美好的重播我更改无为所有但无幸运感谢美好的重播我更改无为所有但无幸运第一件事是2.0不是新版本它的其他东西根将容纳网站2.0将容纳API你的意思是这样更改#处理前控制器。。。重写cond%{REQUEST_FILENAME}-已重写COND%{REQUEST_FILENAME}-f RewriteRule^(?!2\.0(?:/|$)index.php[L]
是的,我的意思是更改这一行,而不是删除其他行。首先,2.0不是新版本,它的另一个根将保存网站2.0将保存API您的意思是像这样更改#处理前端控制器。。。重写cond%{REQUEST_FILENAME}-已重写COND%{REQUEST_FILENAME}-f RewriteRule^(?!2\.0(?:/))index.php[L]
是的,我的意思是更改这一行,而不是删除其他行。