【问题标题】:.htaccess not working.htaccess 不工作
【发布时间】:2011-04-05 21:04:09
【问题描述】:

我有一个 .htaccess 文件来删除 codeigniter 样式 URL 的 index.php 部分。它在一台计算机上运行良好,但是当我将文件复制到我的笔记本电脑时,它似乎没有做任何事情。我在两台机器上都使用 localhost。他们都使用捆绑的 apache 和 php 以及最新版本的 mysql 运行 mac osx 10.6。一切正常,只是 .htaccess 没有做它应该做的事情。有没有我可能在我的第一台机器上更改并忘记的任何设置?!

编辑: 我想知道我现在的 CI 设置是否有问题。如果我加载 base_url 即http://localhost/~User/project/ 然后它完美加载,添加 index.php。 我的配置文件有

 $config['index_page'] =  '';

但是,作为测试,我将此值返回给“index.php”。当我在此之后加载 base_url 时,它返回:http://localhost/~User/project/index.php/index.php/controller/method

这对任何人有什么建议吗?

【问题讨论】:

  • 您是否检查了两台机器上文件的权限以确保它们匹配?您知道.htaccess 文件是否被解析,还是您只是遇到mod_rewrite 问题?
  • 权限似乎都是正确的。如何确定文件是否正在被解析?
  • 嗯,查看mod_rewrite 是否特别有效的一种简单方法是在.htaccess 文件的顶部执行以下操作:RewriteRule ^ http://stackoverflow.com/ [R,L],然后在您访问时查看是否该站点,您将被重定向到 StackOverflow。如果可行,请发布您的 .htaccess 文件的内容,以便我们查看它们,看看还有什么问题,如果没有问题,mod_rewrite 或 Apache 解析您的 @ 的能力确实有问题987654333@文件。
  • 太好了,谢谢蒂姆。我已经尝试了您的建议,但它没有重定向。所以这意味着 httpd.conf 文件有问题,对吧?
  • 嗯..听起来像。如果您不确定是否在主配置中启用了Options +FollowSymLinks,请尝试在.htaccess 的顶部添加Options +FollowSymLinks,但我怀疑这是这里的问题。您介意在您的问题中发布完整的.htaccess 吗?这样更容易看出它是否有什么特别之处。 (另外,我们可能需要将此迁移到ServerFault

标签: php apache url .htaccess codeigniter


【解决方案1】:

已解决:

我在我的 httpd.conf 文件中添加了一个新的目录命令,该命令针对我正在处理的特定站点。现在似乎很开心,但如果我的 web 根目录中有多个 codeigniter 站点,则不是一种非常令人满意的解决问题的方法。

【讨论】:

  • 如果这确实是解决方案,请将您的答案标记为正确或“选择”。
【解决方案2】:

也许您更改了相对于服务器根目录的路径。它可以破坏 .htaccess 并且可以通过 RewriteBase /path/to/folder/ 语句解决


编辑

由于问题似乎不是上述问题,您还可以检查 apache 文件夹中的 error.log 文件(可能在日志文件夹中)。它可能有你的答案,它可以告诉你 .htaccess 是否被解析错误或根本没有被解析。

【讨论】:

  • 它已经包含了一个 RewriteBase 语句,据我所知是正确的。
  • 错误日志中根本没有关于 .htaccess 文件的内容。这是否表明它根本没有被解析?
  • 我想是的。或者至少它正在被解析但产生了不希望的效果。既然你说 .htaccess 之前已经在工作了,我想它真的没有被解析。
【解决方案3】:

您确定更改了根文件夹的名称吗? 这是我的工作:

我把它放在我的根文件夹中:

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

并在路径中将“rootFoldel”替换为您正在使用的名称。

希望有帮助!

【讨论】:

    【解决方案4】:

    如果您使用的是 Ubuntu,则需要编辑 /etc/apache2/sites-available/default。

    sudo vim /etc/apache2/sites-available/default
    

    你看到写着AllowOverride的行改成:

    允许全部覆盖

    您可能还需要启用mod rewrite

    sudo a2enmod rewrite
    

    然后,重启 Apache 服务器

    sudo /etc/init.d/apache2 restart
    

    【讨论】:

    • 他特别说他用的是Mac OSX。
    • @KyleFarris:不过,关于AllowOverride,他可能仍然是正确的。
    • @KyleFarris 我不使用mac,但遇到过类似情况,希望能有所帮助。
    • 我完全同意。我的意思是说它应该有助于找出重写问题的解决方案。
    • @MitchellMcKenna,我们如何在不重启服务器的情况下即时执行此操作?
    【解决方案5】:

    您是否在两者上都安装了 mod_rewrite?

    【讨论】:

    • 刚刚检查了httpd.conf文件,确实安装了mod_rewrite。
    猜你喜欢
    • 1970-01-01
    • 2017-06-12
    • 2017-06-08
    • 2012-04-30
    • 2012-11-02
    • 2010-10-31
    • 2015-11-16
    • 2016-03-01
    相关资源
    最近更新 更多