Php

無法載入 mod_rewrite Apache 模組

  • January 25, 2017

我正在嘗試使用mod_rewrite的模組Apache24 server,但我無法載入它。我知道有很多關於這個主題的問題,我已經解決了所有問題,但似乎沒有任何效果。這些是我到目前為止所遵循的步驟——

  1. CHANGEDhttpd.conf文件進行了這些更改

:未註釋LoadModule rewrite_module modules/mod_rewrite.so

B. 改為AllowOverride None_AllowOverride All 2. 重啟apache伺服器 3. 使用命令提示符命令檢查載入的模組httpd -M。我可以在那裡看到 mod_rewrite 模組已載入。我附上下面的圖片。

我的命令提示符的螢幕截圖

但是在執行完所有這些步驟之後,我看不到 mod_rewrite 作為載入的模組phpinfo

phpinfo文件截圖

如上圖所示,沒有載入 mod_rewrite 模組。同樣作為一個瘋狂的黑客,我什至嘗試使用.htaccess文件重寫 URL,但這不起作用。.htaccess儘管我已將該文件放在我的根目錄中,但Apache 似乎忽略了文件。

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. 您不需要 .htaccess 或 AllowOverride 來使 mod_rewrite 工作,不要使用,因為您是伺服器的管理員,因為它只會使您的生活複雜化並給您的伺服器造成不必要的成本。
  2. 除了載入模組之外,您需要的唯一指令是:

重寫引擎開啟

額外的:

  1. 考慮使用 Redirect/RedirectMatch 代替(來自 mod_alias)進行簡單的重定向,如果這就是您所需要的。
  2. 考慮在虛擬主機上下文中定義重定向/重寫以避免未來的噩夢和在不久的將來失去頭髮。

引用自:https://serverfault.com/questions/827896