【问题标题】:Wordpress - Show my blog along with main siteWordpress - 与主站点一起显示我的博客
【发布时间】:2011-12-28 08:10:54
【问题描述】:

我已经在我网站的根文件夹中运行了基于 PHP 的主要网站。让我们称之为 www.example.com。我大约有几页。一些导航链接是:

首页 |服务 |关于我们 |联系我们

我想为此添加一个 Wordpress 博客。所以这就是我所做的。

首页 |博客 |服务 |关于我们 |联系我们

请注意,我现在在网站的根文件夹中创建了一个名为“blog”的子文件夹,并且我已将所有 Wordpress“文件”上传到 blog 文件夹中。所以如果我想访问我的博客,到目前为止,我会访问:www.example.com/blog

到目前为止,还可以。现在,当我向博客添加新帖子时,我不希望人们在尝试阅读帖子时看到 URL 中的“/blog”。我浏览了以下链接,但没有帮助:Giving WordPress Its Own Directory

如果人们只想托管他们的 Wordpress 网站而不是其他任何东西,上面的链接将有所帮助。它有助于保持根文件夹清洁并仍然从根文件夹访问 URL。但我的情况并非如此。我已经在根文件夹中运行了基于 PHP 的网站。我只是想 博客是一个补充,但跳过显示它已添加到另一个文件夹中。

我在 wordpress 的管理面板中也进行了以下更改:

在“设置>常规”页面:

WordPress 地址(URL):www.example.com/blog

网站地址(URL):www.example.com

在“永久链接设置”页面中,选择此选项:http://www.example.com/sample-post/

现在,主页和其他页面加载正常。

问题:

当我访问:www.example.com/blog 时,它显示:

“这有点尴尬,不是吗? 我们似乎找不到您要找的东西。也许搜索或以下链接之一会有所帮助。”

  1. 我不明白为什么我希望看到帖子时看到上面的内容。有一个 Hello Word 的示例帖子。我希望看到一个链接,但那没有发生。为什么会这样?

  2. 此外,如果我单击“主页”链接,它会将我带到网站的主页,这是正确的。但是,如果我单击“最近的帖子”下的“示例页面”菜单链接或“Hello World”链接,地址栏中会出现以下 URL: www.example.com/hello-world/ 但是,它没有向我显示帖子。相反,它会加载我网站根文件夹的 index.php 页面,这不应该发生。看起来好像没有加载 CSS 文件,因为它删除了所有 CSS。所以当我访问时出现 index.php 页面的 CSS 剥离版本:www.example.com/hello-world/

我试图为此找到解决方案,但所有这些都导致了“为 WordPress 提供自己的目录”的帖子。该页面中提到的解决方案不适用于我的情况。如何解决?感谢所有帮助。

谢谢。

【问题讨论】:

  • 如果不实际检查实际问题,我不确定,但您仍然可以尝试将您的wp site address 发送给 -> www.example.com/blog
  • 如何链接到“首页 | 服务 | 关于我们 | 联系我们”?我的意思是,您使用的是mod_rewrite 还是它们只是services.php 之类的?我想我可以提出解决方案
  • 感谢您的回复。我在下面给出了个人答复。请检查它们。
  • 我现在想知道... wordpress 是否也有类别的永久链接?如果没有,那么事情可能会再次变得复杂......

标签: php wordpress


【解决方案1】:

方法一

这会很脏,我不确定这是否可行,但请尝试执行以下操作(我希望您的网站是程序性的,并且您没有使用任何框架,否则这会使事情变得有点复杂) :

  1. 将博客放在文档根目录中,这样所有 WP 链接都可以“自然”工作。
  2. 将您的站点文件放入site/ 子文件夹。
  3. 现在我们将使用.htaccess 做一些魔术,并通过将以下代码放在RewriteEngine on 之后重写您的“站点”链接:

    # do this for all pages of your site:
    RewriteRule ^services/?$ /site/services/$1 [L,QSA]
    # now let's try to trick WordPress and swap / with /blog
    # so users will see /blog in adressbar, but we'll show the WP homepage
    RewriteRule ^blog/(.*)?$ /$1 [L,QSA]
    
  4. 现在我们应该让 WP 认为/blog 实际上是/,所以它不会产生任何怀疑。将以下脚本放在 Wordpress 的 index.php 文件中,在任何其他代码之前:

    if( $_SERVER['REQUEST_URI'] == '/' ){ // original site homepage requested
        include('./site/index.php');
        exit;
    }
    
    if( trim($_SERVER['REQUEST_URI'], '/') == 'blog' ){
        $_SERVER['REQUEST_URI'] = '/';
        $_SERVER['QUERY_STRING'] = '';
    }
    

我没有测试过任何东西,但你应该试试这些。

方法二

我不是高级 WP 用户,但如果使用 @bingjie2680 的答案中的永久链接建议会改变网址,那么除了该答案之外,您只能再尝试一件事。在文档根目录(不是 WP 的根目录)中的 .htaccess 中添加类似于以下几行的内容:

    RewriteCond %{REQUEST_URI} !^(services|about|or_other_stuff)/?$
    # Rewrite the request to call the WP index.php.
    RewriteRule ^(.*)$ /blog/index.php/$1 [L,QSA]

也许还有其他方法,也许真正的解决方案会同时使用这两种方法。 继续努力。

【讨论】:

  • 这也是一个解决方案。好帖子。并感谢您编写重写规则。 +1
  • @s3v3n 感谢您的评论。我尝试了方法 2,但它导致我在整个网站和博客中出现 500 内部服务器错误。我想知道我做错了什么。同样在重写规则的第一行中,我是否必须指定链接名称或指向实际 php 文件的链接,例如。 services.php,about.php?我目前正在使用您在方法 2 中提到的规则,但我已将链接替换为链接名称。其中一个链接是“联系我们”,因此其中存在空白。请让我知道我能做些什么来解决这个问题。我也试图在 URL 中跳过 /blog。谢谢。
  • 检查错误日志总是一个好主意。你必须像以前一样写 url,所以如果你在 url 中有 /services.php,你应该把 services.php 放在那里。第一行只是说:“如果请求 url 不是 'services' 或 'about' 或 ...,请使用此重写规则,以便 WP 可以看到它的链接,否则就按原样使用它,所以如果你没有'那里没有任何框架,您可能应该输入文件名。在 url 中有空格不是一个好主意(你的意思是空格,对吗?)。干杯
  • 我一直试图让它工作,但它根本没有。我遇到的所有文章都为 WPMU 站点提供了答案,并且只是一个备用目录修复。但是对于一个基于 PHP 的网站和 WP 博客来说没有什么可并行的。任何人都可以解决这个问题吗?
【解决方案2】:

如果你做以下事情,我认为不会有问题:

  • 无需更改原始网站中的任何内容。
  • 在您的根目录中创建一个名为 blog 的文件夹,并将所有 wordpress 文件放在此处。
  • 按照快速的五步设置您的博客
  • 您的 wordpress 网址和网站网址都应该是 yourdomain.com/blog
  • 在“永久链接设置”页面中,选择此选项:www.example.com/sample-post/
  • 保留您的菜单,例如:主页 |博客 |服务 |关于我们 |联系我们 'blog' 指向 yourdomian.com/blog

现在,如果您点击博客菜单,您的网站网址将是 yourdomian.com/blog,但如果您点击其中一篇文章说“hello world”,那么您的网址将是 yourdomian.com/hello-world。

【讨论】:

  • 我怀疑这会起作用,因为 WP 不会收到任何请求。他只会得到 404。
  • 如果您在根目录下有一个配置正确的 .htaccess 文件,您不会:)
  • @bingjie,感谢您的回复。我试过了。你提到的几点,奏效了。但他们只是把我带到了显示 www.example.com/blog 的地步。当我单击 Hello World 帖子时,URL 显示为:www.example.com/blog/hello-world/。我还添加了 s3v3n 在 Method2 中提到的重写规则。但是那种破坏了整个网站,包括博客。现在,每当我访问网站和博客时,我都会收到 500 内部服务器错误。我做错什么了吗?
猜你喜欢
  • 2018-12-02
  • 2021-04-16
  • 2017-07-26
  • 2016-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 2015-04-16
相关资源
最近更新 更多