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

Переписать проблемы с кастомным сайтом и wordpress

Я управляю веб-сайтом вкусаporto.com, который представляет собой простой php / mysql с частью блога в wordpress.

На основном веб-сайте у меня есть следующие правила перезаписи apache

RewriteEngine On
RewriteBase /

# no-www to www
RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301]

# http to https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301]

# if not blog, make URLs pretty
RewriteCond %{REQUEST_URI} !^.*\/blog\/.*$ [NC]
RewriteCond %{REQUEST_URI} ^.*\/index [NC]
RewriteRule ^(.*)index\.php$ /$1 [R=301,L]

# if not blog, make URLs pretty by removing file extension
RewriteCond %{REQUEST_URI} !^.*\/blog\/.*$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]

В каталоге wordpress у меня есть стандартные правила плюс одно, чтобы убедиться, что они применяются к пути к блогу:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^.*\/blog\/.*$ [NC]
RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_URI} ^.*\/blog\/.*$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Все обычные ссылки на сайте работают нормально, как и стартовая страница для блога.

Проблема в том, что постоянные ссылки Wordpress вроде https://tasteporto.com/blog/ready-for-sao-joao/ сделай это https://www.tasteporto.com/http:/www.tasteporto.com/

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

Спасибо тебе из ада переписать

Спасибо за ответы, я очень ценю их.

После некоторых проб и ошибок я понял это. Проблема была в основе правил перезаписи в части блога.

Во-первых, что-то, что помогло, - это усиление логирования файлов журнала доступа и ошибок. Итак, в /etc/apache2/mods-available/rewrite.load я добавил вторую строку ниже:

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
LogLevel alert rewrite:trace4

Тогда вот изменения в файле конфигурации веб-сайта в sites-available:

RewriteEngine On
# Turn on HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# No-www to www
RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

А вот .htaccess на главном сайте:

RewriteEngine On
# if not blog do make URLs pretty
# by removing .php extensions
RewriteCond %{REQUEST_URI} !^.*\/blog\/.*$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]

И, наконец, .htaccess в каталоге блога:

RewriteEngine On
RewriteBase /blog
RewriteCond %{REQUEST_URI} ^/blog
RewriteRule ^/blog/index\.php$ - [L]

RewriteCond %{REQUEST_URI} ^/blog
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]

Основная проблема заключалась в том, что последний бит RewriteBase был изменен на / blog.

Надеюсь, это поможет другим.

Проблема может быть вызвана следующими правилами:

# http to https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301]

Пожалуйста, попробуйте изменить его на:

RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{SERVER_NAME}/%{REQUEST_URI} [R=301,L]