用自定义网站和wordpress重写问题

我正在pipe理一个网站tasteporto.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目录中,我有标准规则加上一个,以确保它被应用到博客path:

 # 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/

我知道这是愚蠢的简单,但我一直在寻找同样的问题太久,可以使用一些帮助。 有人可以提供一些智慧吗?

谢谢你从重写地狱

可能是以下规则导致的问题:

 # 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] 

谢谢你的回应,我真的很感激他们。

经过一些试验和错误,我find了答案。 问题是在博客部分的重写规则的基准。

首先,有助于增加日志logging到访问和错误日​​志文件。 所以在/etc/apache2/mods-available/rewrite.load我添加了下面的第二行:

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

那么这里是网站configuration文件中的网站可用重写:

 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。

我希望这可以帮助别人。