php - .htaccess 文件在 LAMP 中不起作用

标签 php .htaccess codeigniter apache2 ubuntu-14.04

这是我的 .htaccess 文件。我的项目使用了 Codeigniter 框架。

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

我的错误在哪里?但它在 xampp 中有效。

最佳答案

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

因此,如果它是 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>

关于php - .htaccess 文件在 LAMP 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28217272/

相关文章:

apache - .htaccess 重写参数未传递到目标页面

apache - .htaccess 似乎忽略了 RewriteCond

php - 如何将列数据转换为行数据

php - 在 PHP 中使用 TCPDF 将 SVG 转换为 PDF

php - 使用 symfony 2.1 更改语言环境

Python+Flask+Cgi+Apache 重写?

codeigniter - 我可以在没有终端的情况下使用 Angular JS 吗?

php - 不知道如何将图像差异添加到 HTML 表的 php/sql 填充中

php - 如果模型 'created' 的字段 'listings' 中的日期超过 2 周前,如何在 cakephp 中查询?

JQuery ajax() 返回 200 但未运行成功函数