WordPress — Apache не перенаправляет на index.php в Arch Linux

Я пытаюсь настроить проект WordPress на моем локальном хосте, но когда я открываю браузер на localhost Я вижу только файлы в корне моего проекта WordPress.

Если я нажму на index.php или доступ localhost/index.php он выполняет PHP как ожидалось.

Я установил apache 2.4, php 7.2 а также php-apache 7.2,

Мой проект в /srv/http/mysite:

Соответствующие строки в /etc/httpd/conf/httpd.conf файл:

LoadModule rewrite_module modules/mod_rewrite.so

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Примечание: так как httpd.conf очень большой, я показал только те строки, которые, как я знаю, актуальны. Если этого недостаточно, я могу загрузить весь файл на pastebin.

Файл /etc/httpd/conf/extra/httpd-vhosts.conf:

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/srv/http/mysite/"ServerName test.localhost
ServerAlias test.localhost
ErrorLog "/var/log/httpd/test.localhost-error_log"CustomLog "/var/log/httpd/test.localhost-access_log" common

<Directory "/srv/http/mysite/">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

Файл /srv/http/mysite/.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

мой /etc/hosts файл:

127.0.0.1   localhost
127.0.1.1   mycomputer_name
127.0.2.1   test.localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Об этом последнем файле я заметил, что если я удалю <IfModule ...> а также </IfModule> сайт работает и перенаправляет на index.php, но я бы предпочел не изменять этот файл, так как он работает так, как на удаленном сервере, который использует ubuntu,

Главный вопрос, почему это не работает, но я также был бы рад узнать, что <IfModule mod_rewrite.c> делает и почему это игнорируется, хотя LoadModule rewrite_module modules/mod_rewrite.so включен.

Я знаю, что это не простой вопрос, но я не нашел никого с такой же проблемой в Интернете. Буду очень признателен за любую помощь.

0

Решение

Apache должен быть настроен на распознавание ваших индексных файлов (в данном случае index.php)

У вас есть следующее в вашем каталоге

DirectoryIndex index.php

Так

<Directory "/srv/http/mysite/">
DirectoryIndex index.php
AllowOverride All
Require all granted
</Directory>
3

Другие решения

В httpd.conf у вас должно быть что-то вроде …

<IfModule dir_module>
DirectoryIndex index.php index.htm index.html
</IfModule>

Это был бы ваш запасной вариант.

И тогда в вашем httpd-vhosts.conf одно из многих описаний сайта может выглядеть примерно так …

<VirtualHost *:8080>
ServerAdmin [email protected]
DocumentRoot "e:/Stack/Sites/siteName/web"ServerName siteName
ServerAlias siteNameUser
<Directory "e:/Stack/Sites/SiteName/web">
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog "logs/siteName.error.log"CustomLog "logs/siteName.access.log" common
</VirtualHost>

Обратите внимание DirectoryIndex index.php в httpd-vhosts.conf объявление сайта не требуется, если вы включили резервные значения по умолчанию в httpd.conf

Если вы не хотите использовать порт 80 по умолчанию, то в любом файле есть что-то вроде: Listen 8080

Для localhost я использую: в httpd.conf … Listen 127.0.0.1:8080 и в httpd-vhosts.conf Listen 8080

В вашем файле hosts вам нужно определить что-то вроде …
127.0.0.1 siteName siteNameUser www.siteName.com

В настоящее время используется: Apache / 2.4.33 (Win64) PHP / 7.2.4 ~ MySql 5.7.22 доморощенный стек.
Пример httpd-vhosts.conf предназначен для Drupal 8.x — для WP ваши DocumentRoot и Directory будут различаться.

Вы можете прослушивать несколько портов, таких как 8080 для dev, 8081 для теста, 8082 для prod. Также вы можете иметь много разных определений сайта в файле httpd-vhosts.conf.

Я предпочитаю определять все сайты в httpd-vhosts.conf, но вы можете просто разместить их в httpd.conf

0

По вопросам рекламы [email protected]