当我上传文件时,我将它们上传到共享主机中。问题是我的codeigniter的文件和文件夹位于其中一个网站名称文件夹中。
当我访问该网站时,它给我一个404错误。
我的.htaccesss
文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ index.php?/$1 [L]
#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ index.php?/$1 [L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 index.php
</IfModule>
我真的不知道该怎么办。任何帮助都是适用的。感谢。
编辑:当我编辑index.php文件并只添加echo 'Hey';
之类的内容并删除.htaccess文件时,它可以正常工作。
答案 0 :(得分:1)
根据您的文件结构:
404错误可能与此部分有关:
<IfModule !mod_rewrite.c>
ErrorDocument 404 index.php
</IfModule>
这意味着:如果Apache模块mod_rewrite.c
未被使用或不存在,则所有404都将被发送到index.php 。如果您的codeigniter index.php位于根“web”文件夹(public_html)中,那么您应该编写ErrorDocument 404 /index.php
。如果它在您需要的任何子文件夹中,例如:/dyar.no/index.php
,其余规则也应指向相同的index.php。
如果您将当前的.htaccess放在index.php(您网站的根文件夹的同一文件夹)附近,那么它当前的效果很好。
此外,如果你没有有意义的条件和规则,.htaccess是没用的。你拥有的那个是专门用于codeigniter的,它有一个system
和一个application
文件夹。
您可以在其他网站的文件夹中包含多个.htaccess文件(如果您在多个文件夹中使用codeigniter,请将.htaccess复制到这些子文件夹,例如:if dyar.no 正在使用.htaccess到该文件夹的codeigniter副本。)
我注意到您还在使用 Wordpress ,因此可以相应地更改这些规则...所以删除当前的根.htaccess文件(来自public_html文件夹)并安装BulletProof Security你的wordpress网站插件。完成后,在管理仪表板(BPS选项卡)中,您只需单击生成安全.htaccess (它会根据您的文件结构生成强大的.htaccess,并将涵盖大多数安全问题)。之后,在根文件夹和管理文件夹上激活它,你应该完全覆盖它。
生成的.htaccess也可以很好地引用你可能需要的其他.htaccess。
http://www.askapache.com/htaccess/htaccess.html是我发现理解和编写.htaccess和here are a few examples的最佳参考资料之一。
希望它有所帮助!
答案 1 :(得分:1)
在 .htaccess 文件中添加以下内容
RewriteEngine on
RewriteCond $1 !^(index\.php|folername|uploaded|dist|images|plugins|js|css|cache|robots\.txt)
RewriteRule ^(.*)$ /projectfoldername/index.php/$1 [L]
注意:projectfoldername是您的htdocs或项目文件夹名称
答案 2 :(得分:0)
试着改变你的最后一行,请告诉我
RewriteRule .* index.php/$0 [PT,L]
答案 3 :(得分:0)
试用此代码:
RewriteEngine on
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
答案 4 :(得分:0)
试试这段代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
答案 5 :(得分:0)
尝试使用.htaccess
的代码<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
您还需要更改config > config.php
$config['base_url'] = '';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
然后您的网址就像projectname/contrillerName/functionName/
答案 6 :(得分:0)
我建议在.htaccess中使用Rewrite base /{your codeigniter folder}/
,这对我有用。
答案 7 :(得分:0)
在.htaccess
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|image|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
在config.php(application/config
)
$config['base_url'] = 'http://stackoverflow.com/'; # set this to prevent HOST Injectio.
$config['index_page'] = '';