我开发了一个Web应用程序,其中我使用了codeigniter,我的Web应用程序的所有URL的结构如下:
<?php echo base_url();?>/Admin/Promotions
这种类型的链接在我的 Localhost 中运行良好但在我的托管服务器上无效(我使用Godaddy托管)
但是一些在URL中有index.php的链接在localhost和server上都工作,这个链接之王的结构也是
<?php echo base_url();?>index.php/Admin/Pramotions
我做了什么,以便没有index.php的网址效果很好?
我的HTACCESS:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
答案 0 :(得分:2)
使用此 htaccess -
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
然后设置 base_url -
$config['base_url']='http://www.domain_name.com';
然后删除配置文件中的index.php -
$config['index_page'] = '';
之后它将在没有index.php的情况下工作
答案 1 :(得分:1)
打开config.php并执行以下替换
$config['index_page'] = "index.php"
到
$config['index_page'] = ""
只需替换
$config['uri_protocol'] ="AUTO"
到
$config['uri_protocol'] = "REQUEST_URI"
AND IN HTACCESS FILE下面的代码
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
答案 2 :(得分:1)
如果上述答案都不起作用,也许您需要在httpd.conf中激活mod_rewrite:
在终端上:
sudo nano /etc/httpd/conf/httpd.conf
ctrl + w查找“重写”
取消注释这一行:
LoadModule rewrite_module modules/mod_rewrite.so
保存并重新启动httpd(apache)。
答案 3 :(得分:0)
这对我有用...... .htaccess
文件是这样的......
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
别忘了设置
$config['base_url']='http://www.domain_name.com';