Назад | Перейти на главную страницу

Не удается загрузить модуль mod_rewrite Apache

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

  1. ИЗМЕНЕНО httpd.conf файл внес эти изменения:
    а. Без комментариев LoadModule rewrite_module modules/mod_rewrite.so
    б. Изменено AllowOverride None к AllowOverride All

  2. Перезапущенный сервер Apache

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

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

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

 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 не найден на этом сервере.

Судя по вашим связанным снимкам экрана, ваш корень сервера (путь к файловой системе) выглядит следующим образом: C:/Apache24, но вы не ссылаетесь на C: в любой из директив конфигурации вашего сервера? Вам нужно указать полный путь к файловой системе, например:

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

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

  1. Вам не нужны .htaccess или AllowOverride для работы mod_rewrite, не используйте, поскольку вы являетесь администратором своего сервера, поскольку это только усложнит вашу жизнь и вызовет ненужные накладные расходы на ваш сервер.
  2. Помимо загрузки модуля единственная необходимая директива:

    RewriteEngine на

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

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