Я использую экземпляр LAMP со средним значением AWS. У меня есть три бета-тестирования WordPress сайтов, все они работают и рендерит страницы, ни один не завершен на 100% Версии программного обеспечения сервера:
php 7.0.3
httpd apache / 2.4.33
Wordpress 4.9.8
Я потратил значительное время на изучение своей конкретной задачи, включая написание некоторого кода плагина, чтобы попытаться понять проблему, я уже близко, но пока не решил проблему.
Проблема, с которой я сталкиваюсь, - это когда я изменяю свои настройки постоянной ссылки на% postname%, сайт не может найти страницы. На этом этапе я исключительно ссылаюсь только на страницы, а не на посты. Я не проводил никаких тестов с сообщениями.
Я подтвердил, что mod_rewrite загружен с использованием
sudo apachectl -t -D DUMP_MODULES
and
<?php phpinfo(); ?>
Первая команда перечисляет rewrite_module (общий доступ) как присутствующий. Скрипт php показывает mod_rewrite как часть загруженных модулей.
Хороший ресурс, за которым я следовал, был https://serverfault.com/questions/445599/enabling-mod-rewrite-on-amazon-linux. Было множество других, но это, казалось, охватило все существенные моменты, которые поднял другой поиск.
Исходя из вышеизложенного, я воспользовался советом по тестированию перенаправления, и он сработал, перенаправив один из моих доменов на wordpress.org. (чтобы пройти этот тест я отредактировал /etc/httpd/conf/httpd.conf)
Пожалуйста, попробуйте это: в конфигурации сервера - не .htaccess добавьте
строки RewriteEngine On и RewriteRule ^ (. *) $
http://www.wordpress.org/ [R], чтобы подтвердить, работает ли перезапись в
все. Он должен передавать весь трафик на сайт Wordpress
Также я создал базовый плагин для тестирования различных функций WordPress. Я подумал, что некоторое внутреннее смещение могло привести к тому, что WordPress не нашел запрашиваемую страницу. Это было неправильно. WordPress нашел правильную страницу при передаче идентификатора страницы в функцию get_permalink ().
Я просто добавил эхо get_permalink (290); на мой простой код плагина. И это правильно повторило
https://www.mydomainname.com/correct-slug-for-page-290
Если я скопирую и вставлю URL-адрес над ним, произойдет сбой.
Примечание. Когда я изменяю свои настройки постоянной ссылки, файл .htaccess автоматически изменяется / обновляется.
Если я установил обычные настройки постоянной ссылки WordPress, все будет работать.
Если я установлю свои постоянные настройки WordPress на custom и использую index.php /% postname% / все ссылки разрешаются. (Как с .htaccess, так и без него)
Если я установлю мои постоянные ссылки только на% postname%, все станет ошибкой 404. При установке% postname% wordpress автоматически создает следующий файл
-rw-r--r-- 1 apache www 235 Sep 4 21:47 .htaccess
#BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Отрывки из моего httpd.conf с большинством комментариев отредактированы. Я планирую вернуться и ужесточить некоторые настройки, как только смогу заставить работать эту базовую функциональность.
Ценю любые идеи, советы или предложения. Спасибо всем.
#
ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
<Directory />
AllowOverride All
Require all granted
</Directory>
DocumentRoot "/var/www/html"
#
# Relax access to content within /var/www.
#
<Directory "/var/www">
AllowOverride All
# Allow open access:
Require all granted
</Directory>
# Further relax access to the default document root:
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ".ht*">
Require all denied
</Files>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule mime_module>
TypesConfig /etc/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>
EnableSendfile on
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
<VirtualHost *:80>
ServerAdmin webmaster@beta-test-one.com
DocumentRoot /var/www/html/beta-test-one.com
ServerName beta-test-one.com
ServerAlias www.beta-test-one.com
RewriteEngine On
<IF "req('Host') != 'www.beta-test-one.com'">
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://www.%{HTTP:Host}%{REQUEST_URI} [L,R=301]
</IF>
<ELSE>
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=301]
</ELSE>
ErrorLog logs/beta-test-one.com-error_log
CustomLog logs/beta-test-one.com-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@beta-test-two.com
DocumentRoot /var/www/html/beta-test-two.com
<Directory "/var/www/html/beta-test-two.com">
AllowOverride All
</Directory>
ServerName beta-test-two.com
ServerAlias www.beta-test-two.com
RewriteEngine On
<IF "req('Host') != 'www.beta-test-two.com'">
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://www.%{HTTP:Host}%{REQUEST_URI} [L,R=301]
</IF>
<ELSE>
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=301]
</ELSE>
ErrorLog logs/beta-test-two.com-error_log
CustomLog logs/beta-test-two.com-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@beta-test-three.com.au
DocumentRoot /var/www/html/beta-test-three.com.au
ServerName beta-test-three.com.au
ServerAlias www.beta-test-three.com.au
RewriteEngine On
<IF "req('Host') != 'www.beta-test-three.com.au'">
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://www.%{HTTP:Host}%{REQUEST_URI} [L,R=301]
</IF>
<ELSE>
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=301]
</ELSE>
ErrorLog logs/beta-test-three.com-error_log
CustomLog logs/beta-test-three.com-access_log common
</VirtualHost>