无法加载 mod_rewrite Apache 模块

无法加载 mod_rewrite Apache 模块

我正在尝试使用mod_rewrite模块Apache24 server,但无法加载它。我知道关于这个主题已经有很多问题被问到,我已经全部回答过了,但似乎都不起作用。这些是我到目前为止一直遵循的步骤---

  1. CHANGEDhttpd.conf文件进行了以下更改:
    a. 取消注释LoadModule rewrite_module modules/mod_rewrite.so
    b. 更改AllowOverride NoneAllowOverride All

  2. 重新启动 Apache 服务器

  3. 使用命令提示符命令检查已加载的模块httpd -M。我可以看到 mod_rewrite 模块已加载。我附上了下面的图片。

我的命令提示符的屏幕截图

但完成所有这些步骤后,我看不到 mod_rewrite 作为加载模块phpinfo

phpinfo文件的截图

如上图所示,没有加载 mod_rewrite 模块。此外,我甚至尝试使用.htaccess文件重写 URL,但不起作用。Apache 似乎忽略了.htaccess文件,尽管我已将该文件放在我的根目录中。

 Note: I am running `PHP` as an apache module
 Using `WAMP` stack
 Using `localhost` as server

我非常需要这个模块来实现 URL 重写。你们能建议一些其他方法来加载这个模块吗?

编辑

我尝试从虚拟主机重写 URL,因为答案表明模块已加载,并且它不依赖于.htaccessinfo.php。但它仍然没有重定向。我正在添加Virtual host以下设置---

<VirtualHost *:80>
<Directory "/Apache24/htdocs">
Options FollowSymLinks 
AllowOverride All
DirectoryIndex index.html index.php
</Directory>
ServerName localhost
DocumentRoot "/Apache24/htdocs"
ErrorLog "/Apache24/logs/error.log"
CustomLog "/Apache24/logs/access.log" combined
<directory "/Apache24/htdocs">

    <IfModule rewrite_module>
            Options +FollowSymlinks
            RewriteEngine On
    </IfModule>

    <IfModule rewrite_module>
            RewriteRule   ^working.php   fun.html
    </IfModule>

</directory>
# Rewrite Rules #####################
RewriteEngine On
RewriteRule   ^working.php   fun.html
# end Rewrite Rules #################   
</VirtualHost>

working.php当我尝试运行 时,上述代码不会将其重定向到fun.html。它只是说:

该服务器上未找到所请求的 URL /working.php。

答案1

  1. 您不需要 .htaccess 或 AllowOverride 来使 mod_rewrite 工作,不要使用,因为您是服务器的管理员,因为它只会使您的生活复杂化并给您的服务器带来不必要的开销。
  2. 除了加载模块之外,您唯一需要的指令是:

    RewriteEngine 开启

额外的:

  1. 如果您只需要 Redirect/RedirectMatch,请考虑使用 mod_alias 进行简单的重定向。
  2. 考虑在虚拟主机上下文中定义您的重定向/重写,以避免未来的噩梦和不久的将来的脱发。

答案2

从您链接的屏幕截图来看,您的服务器根目录(文件系统路径)似乎是,但您在任何服务器配置指令中C:/Apache24都没有提及?您需要引用完整的文件系统路径,例如:C:

<Directory "C:/Apache24/htdocs">
RewriteRule   ^working.php   fun.html

此指令直接在 VirtualHost(容器外<Directory>)中使用,永远不会匹配。在 VirtualHost(或服务器配置)上下文中使用时,mod_rewrite 会匹配完整的 URL 路径,值得注意的是包括斜杠前缀。这与在目录/.htaccess上下文中使用 mod_rewrite 时(排除斜杠前缀时)的一个重要区别。

相关内容