2015-10-15 111 views
0

我正在使用MAMP和CodeIgniter。 我的网站的根目录是:/Users/Roy/Websites/CodeIgniter-3.0.2 在网站文件夹我也有一些其他项目,但我不认为这很重要。下面是Apache的httpd.conf文件:http://pastebin.com/Am0ew0C0为什么这个.htaccess文件的mod_rewrite不工作?

在我的.htaccess文件我使用下列内容:

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

<IfModule authz_core_module> 
    Require all denied 
</IfModule> 
<IfModule !authz_core_module> 
    Deny from all 
</IfModule> 

.htaccess文件位于:/用户/罗伊/网站/ CodeIgniter- 3.0.2 /的.htaccess 我不知道为什么mod_rewrite并没有,它应该消除在URL中使用的index.php,因为我现在使用的URL是:http://localhost:8888/CodeIgniter-3.0.2/index.php/about

,我会像那样变成:http://localhost:8888/CodeIgniter-3.0.2/about PHP版本5.6.10被使用。 .htaccess文件没有被apache读取,这是这里的问题,如何解决它?

+0

你不使用的index.php时得到什么信息? –

回答

0

这可能来自您在httpd.conf文件中将您的文档根目录设置为/Users/Roy/Websites/的事实。我个人会使用virtualhosts如果您打算拥有多个网站,以便每个网站都拥有它自己的.conf,并且您可以专门为每个网站设置文档根目录。

无论如何,所以现在你的CodeIgniter-3.0.2Websites这是你的文档根的子文件夹。所以很可能你对重写库有问题。

如果你在codeigniter文件夹中有你的文件和.htaccess,你的.htaccess将需要如下所示。

RewriteEngine On 
RewriteBase /CodeIgniter-3.0.2 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond $1 !^(index\.php|resources|robots\.txt) 
RewriteRule ^(.*)$ index.php/$1 [L] 
+0

感谢您的建议,但是,当我将所有内容粘贴到.htaccess文件中并重新启动MAMP以确保我仍然可以获得同样的结果。 当使用http:// localhost:8888/CodeIgniter-3.0.2/index.php/about我看到了我的网页,但是当我使用http:// localhost:8888/CodeIgniter-3.0.2/about时,我得到了默认从CodeIgniter没有找到页面,这是一个截图:http://imgur.com/65H4mxu – Gameshadow

+0

你是否更新你的CI配置到这个'$ config ['index_page'] ='';' –

+0

是的,我认为,http: //imgur.com/T7Cntdm – Gameshadow

0

您可以使用此

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

<IfModule !mod_rewrite.c> 
    ErrorDocument 404 /index.php 
</IfModule> 
+0

感谢您的输入罗素,但是由于某些原因,整个.htaccess文件没有被读取。 – Gameshadow

1

问题解决了,就没有必要乱用MAMP安装httpd.conf文件。只需获取CodeIgniter并将其放置在MAMP内的htdocs文件夹中即可。之后,创建的文件夹笨(不里边有应用程序文件夹)内的.htaccess文件,并使用下面的代码:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /ci/ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 

现在你有干净的网址,不再需要使用/index.php/about但可以做/关于。

0

的.htaccess可能是非常令人沮丧。走了很多什么真正的作品

贵国的.htaccess应该看起来像你的项目的根目录名称此

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /booking/ 
RewriteCond %{REQUEST_URI} ^system.* 
RewriteRule ^(.*)$ /index.php?/$1 [L] 
RewriteCond %{REQUEST_URI} ^application.* 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

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

</IfModule> 

2.Replace线3条,在我自己的情况下,“本地主机/预订/ '

3.复制。从应用程序文件夹到根目录的htaccess文件。这意味着您现在必须在整个项目中使用.htaccess文件的实例。

4.in你的config.php文件,基本URL应该是这样的我自己的情况

$config['base_url'] = 'http://localhost/booking/' 

5.

$config['index_page'] = ''; 

6.

$config['uri_protocol'] = 'REQUEST_URI'; 

7.转在你的httpd.conf文件中通过删除该行前面的#来重写mod

LoadModule rewrite_module modules/mod_rewrite.so 

我希望这能解决你的问题