我从一天开始就一直试图从我的应用程序中删除 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。