我有一个非常简单的网站,我还在其子文件夹/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个。
- 更改以下内容并保存文件。使用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
不带前导斜杠。