我使用CodeIgniter框架在PHP中创建了一个站点。完成后,我编辑了routes.php
文件并添加了.htaccess文件以从网址中删除/index.php/
部分。
现在,当我尝试在localhost中打开它时,它运行正常,我可以访问http://localhost/mysite
并获取我想要的着陆页。
但是,问题是当我尝试访问服务器上的站点时,我收到错误。因此,如果我打开类似http://mysite.com
的内容,我会获得CodeIngniters的默认404页面。如果我指定了他们的URL,我可以打开所有其他页面,例如:http://mysite.com/about
但是当其他人打开网站时,他会收到错误并且他不知道输入什么以便传递该错误。
我该怎么做才能解决这个问题?提前谢谢。
编辑:.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [NC,L,QSA]
答案 0 :(得分:0)
这个.htaccess代码总是对我有用,你可以试试这个:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
答案 1 :(得分:0)
你的.htaccess确实引起了一些担忧,你试图将文件位置作为查询字符串传递,这可能在CodeIgniter中有效,但有更好的方法可以做到这一点。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]
另外,请确保在config.php中设置了以下选项:
$config['uri_protocol'] = 'REQUEST_URI';
祝你好运。
答案 2 :(得分:0)
此.htaccess代码正常工作
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
并在配置
$config['index_page'] = '';