我正在使用MAMP和CodeIgniter。 我的网站的根目录是:/Users/Roy/Websites/CodeIgniter-3.0.2 在网站文件夹中我还有一些其他项目,但我认为不重要。这是apache httpd.conf文件:http://pastebin.com/Am0ew0C0
在我的.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文件位于:/Users/Roy/Websites/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。 apache没有读取.htaccess文件,这是问题,如何解决?
答案 0 :(得分:1)
问题解决了,没有必要乱用安装了MAMP的httpd.conf。只需获取CodeIgniter并将其放在MAMP内的htdocs文件夹中。之后在CodeIgniter文件夹(而不是那里的应用程序文件夹)中创建一个.htaccess文件,并使用以下代码:
removeActionForKey
现在你有了干净的URL,不再需要使用/index.php/about,但可以做/关于。
答案 1 :(得分:0)
可能是因为您在httpd.conf文件中将文档根目录设置为virtualhosts
。我个人会使用.conf
如果您计划拥有多个网站,以便每个网站都拥有自己的CodeIgniter-3.0.2
,您可以专门为每个网站设置文档根目录。
无论如何,现在您的Websites
是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]
的子文件夹,它是您的文档根目录。所以很可能你的重写基础有问题。
如果您在codeigniter文件夹中有文件和.htaccess,则.htaccess将需要如下所示。
{{1}}
答案 2 :(得分: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>
答案 3 :(得分:0)
看起来像文件权限问题。检查.htaccess文件的属性并更改权限。
尝试使用此代码。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
更多尝试http://w3code.in/2015/09/how-to-remove-index-php-file-from-codeigniter-url
答案 4 :(得分:0)
.htaccess可能非常令人沮丧。对真正有效的事情采取很多措施
1.你的.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.将第3行替换为项目的根目录名,在我自己的情况下&#39; localhost / booking /&#39;
3.将.htaccess文件从应用程序文件夹复制到根目录。这意味着您现在必须在整个项目中使用.htaccess文件的实例。
4.在你的config.php中,Base url在我自己的情况下看起来应该是这样的
$config['base_url'] = 'http://localhost/booking/'
5
$config['index_page'] = '';
6
$config['uri_protocol'] = 'REQUEST_URI';
7。通过删除此行前面的#
,打开httpd.conf文件中的Mod-rewriteLoadModule rewrite_module modules/mod_rewrite.so
我希望这能解决你的问题