我知道网上有无数关于如何在 .htaccess 文件中使用 mod_rewrite 来删除 .php 扩展名的示例。我找到了这个:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
当我在根目录的 .htaccess 文件中使用它时,这非常有效。
现在我试图切换到在服务器上的 httpd.conf 配置文件而不是 htaccess 中进行重写。我将确切的代码复制并粘贴到文件中,将其包装在<IfModule mod_rewrite.c></IfModule>
标签中(我遵循的教程说要这样做。)
但是现在重写不起作用;当我尝试跟踪更改之前有效的网站上的链接时,Apache 给了我一个找不到对象的错误。
我知道 mod_rewrite 正在工作,我将代码放在正确的位置和一切,因为我有规则
RewriteRule ^/echo/(.*)$ /retired/echosomething.php?string=$1
就在其他重写行之后,这条线有效。
在没有 .php 扩展名的情况下,我需要做些什么来使 mod_rewrite 工作?为什么这段代码在 htaccess 中有效,但在 httpd.conf 中无效?