这个Wordpress.htaccess配置有什么问题



我有一个非常简单的网站,我还在其子文件夹/blog/中托管一个博客,并为其创建了子域blog.example.com

在根文件夹/下,我有一个非常简单的网站,只显示信息。在/blog/文件夹中,我有一个WordPress博客。

现在,在根文件夹中,我创建了这个.htaccess文件:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www
RewriteCond %{HTTP_HOST} ^(.*).example.com
RewriteRule ^(.*)$ http://example.com/%1/$1 [NC,P]

这很好,当我在浏览器中编写http:blog.example.com时,Wordpress就会显示出来,一切都正常。

然而,我想在wordpress中激活永久链接,所以我在管理部分激活了它,这在/blog/目录中创建了一个.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

然而,这不起作用,我不明白为什么。从本质上讲,http://blog.example.com运行良好,但之后使用帖子标题失败(类似于http://blog.example.com/my-post)。

url中的地址是正确的(http://blog.example.com/my-post),但浏览器中显示的是根文件夹/index.php

我尝试修改文件做:

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

这一次我总是看到博客的第一页,但上面写着"找不到"。

知道到底发生了什么吗?

请尝试此代码:

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

这可能对你有帮助。

请参阅给WordPress自己的目录,特别是第9个。

  1. 更改以下内容并保存文件。使用WordPress核心文件的目录名,将写着:
    require( dirname( __FILE__ ) . '/wp-blog-header.php' );
    的行更改为以下内容:
    require( dirname( __FILE__ ) . '/wordpress/wp-blog-header.php' );

如果这还不够,您可能还需要将/blog/.htaccess中的RewriteBase修改为

RewriteBase /blog/
...
RewriteRule . index.php [L]

注意index.php不带前导斜杠

最新更新