【问题标题】:.htaccess file not works in LAMP.htaccess 文件在 LAMP 中不起作用
【发布时间】:2015-03-28 19:54:55
【问题描述】:

这是我的 .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。

【问题讨论】:

  • 您的意思是代码不起作用吗?还是给你 500 错误?
  • 当我单击另一个没有 index.php 的链接时显示此错误消息:未找到在此服务器上未找到请求的 URL /new_notificamos/admin/cetagory。
  • 是的..这个文件已经存在于项目中,它的控制器..管理员是控制器..当我在 url new_notif/index.php/admin/cetagory 中写入时它可以工作..
  • 它是否能识别您的 .htaccessf 文件?如果您在 .htaccess 文件中放入一些随机文本,是否会出现内部服务器错误?
  • 好吧,您上面的 .htaccess 代码是正确的。可能会提供更多信息将帮助我们了解您的问题。

标签: php .htaccess codeigniter apache2 ubuntu-14.04


【解决方案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]

【讨论】:

    【解决方案2】:

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

    LoadModule rewrite_module modules/mod_rewrite.so
    

    并确保之前没有# [hash tag]

    【讨论】:

    • yah.. mod_rewrite 在另一种方式之前启用.. 但是 httpd.conf 文件在哪里我找不到这个文件?
    • 这取决于你如何安装它,它通常在 /etc/apache2/conf 下,但你可以通过apache-get-modules检查它是否启用
    • 我在 /etc/apache2/ 根目录中有 conf-available && conf-enabled 文件夹。但我在任何地方都看不到 httpd.conf 文件。 @Gal
    【解决方案3】:

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

    所以说它是一个 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>
    

    【讨论】:

    • @InspireShahin 好的,我说的其余部分你做了吗?
    • 这里是 000-default.conf 文件: ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/ access.log 结合
    • @InspireShahin 您需要允许 .htaccess 正如我在步骤中提到的那样。查看我的编辑。
    • 此文件不可编辑..当我修改并保存时显示无法保存..当尝试编辑此“sudo gedit url”时显示空文件..
    • 试试sudo nano 000-default.conf或者你有root权限吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2017-08-10
    • 1970-01-01
    • 2015-06-04
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多