codeigniter mod_rewrite只在本地工作

时间:2014-09-15 19:10:45

标签: php apache .htaccess codeigniter mod-rewrite

我在上传网站时遇到问题,用codeigniter框架编写

文件说我必须改变.htaccess

RewriteEngine on 
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

并通过删除index.php从' index_page'

更改Config.php
$config['index_page'] = '';

它在本地主机@ localhost / myapp

上正常工作

当上传rewrite_mode不起作用时,我必须在所有代码中返回index.php

example.com/myapp/index.php/controller/action

我尝试了不同的.htaccess方式,但没有人解决它

  

更新:

我上传的服务器是Windows服务器!! ,是否可以将.htaccess转换为IIS上的web.config

1 个答案:

答案 0 :(得分:1)

首先,确保重定向正常。在项目的根目录中创建一个空白的.htaccess文件(又名http://example.com/myapp),其中只包含此文件:

# This allows you to redirect your entire website to any other domain
Redirect 302 / https://www.google.com/

http://example.com/myapp浏览器中访问您的应用,如果您没有立即重定向到Google,那么您的网络服务器处理.htaccess重定向就会出错。

如果您确实被重定向到Google,则重定向正在运行。请在.htaccess文件中尝试此操作:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

编辑:对于IIS,您需要将web.config文件修改为以下内容:How to rewrite the index.php of Codeigniter on Windows Azure

<rewrite>
  <rules>
    <rule name="Rule" stopProcessing="true">
      <match url="^(.*)$" ignoreCase="false" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
        <add input="{URL}" pattern="^/favicon.ico$" ignoreCase="false" negate="true" />
      </conditions>
      <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
    </rule>
  </rules>
</rewrite>