.htaccess文件在LAMP中不起作用

时间:2015-01-29 14:35:14

标签: php .htaccess codeigniter apache2 ubuntu-14.04

这是我的.htaccess文件。我在我的项目中使用了Codeigniter Framework。

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

我的错误在哪里?但它适用于xampp。

3 个答案:

答案 0 :(得分:2)

您不能只是从一台服务器移动到另一台服务器而不确保您的先决条件在那里。大多数系统默认情况下不会启用这些功能。您还没有提供有关您的设置甚至文档根目录的任何细节。

所以说它是一个Ubuntu服务器和apache2,你需要做这些事情。

如果这是一个新的LAMP安装,你需要做的第一件事是确保重写已经开启。

运行此命令以启用mod_rewrite。

sudo a2enmod rewrite

然后,您需要确保在文档根目录中允许.htaccess。

编辑

/etc/apache2/sites-available/000-default.conf

在此文件中搜索此

 AllowOverride None

并将其更改为

AllowOverride All

然后重启apache2。

sudo service apache2 restart

编辑:根据您的评论,您需要使您的虚拟主机看起来像这样,然后重新启动apache2。

    <VirtualHost *:80> 
    ServerAdmin webmaster@localhost 
    DocumentRoot /var/www/html 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
    <Directory /var/www/html>
      AllowOverride All
    </Directory>
    </VirtualHost>

答案 1 :(得分:1)

你确定加载了mod_rewrite模块吗?转到httpd.conf并搜索 -

LoadModule rewrite_module modules/mod_rewrite.so

并确保在

之前没有#[hash tag]

答案 2 :(得分:1)

打开终端 运行以下代码:

sudo nano /etc/apache2/apache2.conf

下来改变:

AllowOverride All

看起来像:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

然后重启apache2。

sudo service apache2 restart

然后.htaccess文件是

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