从 URL Apache 2.4 中删除 index.php

从 URL Apache 2.4 中删除 index.php

我从一天开始就一直试图从我的应用程序中删除 index.php。我尝试了所有方法,但还是无法删除它。问题是 - 不允许我.htaccess在项目目录中拥有文件,并且在我的本地开发机器上运行的 .htaccess 文件中的配置在那里不起作用。

我在本地机器上的配置是:

<IfModule mod_rewrite.c>
    # Rules to serve URLs which point to files directly
    # ----------
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

我知道我不能在主机配置文件 (/etc/apache2/sites-available/000-default.conf/000-default.conf) 中使用 RewriteBase 指令。但是禁用它也不起作用。

为什么这个问题这么难?有很多更复杂的重定向都可以完美运行,但似乎没有明确的解决方案来从 URL 中删除 index.php!

编辑:它安装在 Ubuntu 14.04 机器上。

答案1

如果您必须避免使用 .htaccess,那么在使用 mod_rewrite 时遇到问题时您可以尝试的另一个指令是使用 ErrorDocument 指令,如下所示:

ErrorDocument 404 /index.php

如果选择这种方式,您可能需要稍微调整应用程序代码 - 比如在 index.php 文件的顶部,您可能需要将 $_SERVER['PATH_INFO'] 设置为 $_SERVER['REQUEST_URI']。如果这样做不起作用,请比较开发和生产之间的 $_SERVER 内容以获得更好的想法。

如果您可以按照您所述编辑 conf 文件,并且使用 .htaccess 不是策略/安全问题,那么您可以始终使用 conf 文件中的 AllowOverride 指令为网站启用 .htaccess。

相关内容