Невозможно загрузить модуль Apache mod_rewrite

Невозможно загрузить модуль Apache mod_rewrite

Я пытаюсь использовать mod_rewriteмодуль Apache24 server, но не могу его загрузить. Я знаю, что было задано много вопросов по этой теме, и я рассмотрел все из них, но ничего не работает. Вот шаги, которые я выполнил до сих пор---

  1. Файл CHANGED httpd.confвнес следующие изменения:
    а. Не прокомментирован LoadModule rewrite_module modules/mod_rewrite.so
    б. Изменен AllowOverride NoneнаAllowOverride All

  2. Перезапустил сервер Apache.

  3. Проверил загруженные модули с помощью команды командной строки httpd -M. Я вижу, что модуль mod_rewrite загружен. Прикрепляю изображение ниже.

Скриншот моей командной строки

Но после выполнения всех этих шагов я не вижу mod_rewrite как загруженный модуль в phpinfo.

Скриншот файла phpinfo

Как видно на картинке выше, загруженного модуля mod_rewrite нет. Также в качестве дикого хака я даже пробовал переписывать URL-адреса с помощью .htaccessfile, но это не работает. Apache, похоже, игнорирует .htaccessfile, хотя я поместил этот файл в свой корневой каталог.

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

Мне этот модуль очень нужен для переписывания URL. Можете ли вы предложить другой способ загрузки этого модуля?

РЕДАКТИРОВАТЬ

Я попытался переписать URL с виртуального хоста, так как ответ предполагает, что модуль загружен и не зависит ни от , .htaccessни от info.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. Для работы mod_rewrite вам не нужны .htaccess или AllowOverride, не используйте их, поскольку вы являетесь администратором своего сервера, так как это только усложнит вам жизнь и приведет к ненужной нагрузке на ваш сервер.
  2. Помимо загрузки модуля вам понадобится только следующая директива:

    RewriteEngine включен

Дополнительный:

  1. Если вам нужно только это, рассмотрите возможность использования Redirect/RedirectMatch (из mod_alias) для простых перенаправлений.
  2. Подумайте о том, чтобы определить ваши перенаправления/перезаписи в контексте виртуального хоста, чтобы избежать будущих кошмаров и потери волос в ближайшем будущем.

решение2

Из ваших связанных скриншотов, ваш Server Root (путь файловой системы) кажется C:/Apache24, но вы не делаете ссылку C:ни в одной из директив конфигурации сервера? Вам нужно сослаться на полный путь файловой системы, например:

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

Эта директива, используемая напрямую в VirtualHost (вне контейнера <Directory>), никогда не будет соответствовать. При использовании в контексте VirtualHost (или конфигурации сервера) mod_rewrite соответствует полному пути URL, что, в частности,включаетпрефикс слеша. Это важное отличие от случая, когда mod_rewrite используется в .htaccessконтексте каталога/ (когда префикс слеша исключен).

Связанный контент