【问题标题】:Wordpress url rewrite on subdirectoryWordpress url重写子目录
【发布时间】:2014-02-04 15:24:00
【问题描述】:

我有一个 wordpress 安装,它只有两种自定义帖子类型(bloghowto)。

博客位于根文件夹内的目录中,其中也有一些 html 页面,如下所示:

要从 html 文件访问特定的自定义帖子类型,我有一个 hrefwp/blog 和另一个到 wp/howto

问题是我想跳过那个wp,所以我的网址会像localhost/blog 而不是localhost/wp/blog

我试过了

RewriteEngine On
RewriteRule   blog/ /wp/blog/
RewriteRule   howto/ /wp/howto/

在根目录的 .htaccess 中,它显示了博客模板,但只有 404 页面错误,我不知道应该修改什么来获取 wordpress 帖子。

PS : 对不起我的英语和模糊的信息,截止日期快到了,我不知道应该怎么做才能跳过那个文件夹。

【问题讨论】:

  • 请澄清“我想跳过那个 wp” - 我想你的意思是“跳过”(英语......)。您是说实际文件位于wp/blog/file.html,但您希望它看起来像请求来自blog/file.html?你想要一个链接wp/blog/file.html 来提供其他地方的文件吗?如果你写了一些案例会很有帮助:“当href是这个时,我想提供那个页面;当用户在地址中输入x时,我想给他们y”。等等。你的要求越清晰,就越容易给你一个有用的答案。
  • 感谢您的宝贵时间。实际上我想要的是直接访问这些自定义帖子,而不是 url 中的“wp”文件夹,如 localhost/blog,而不是 localhost/wp/blog。我希望现在已经足够清楚了

标签: php wordpress apache .htaccess mod-rewrite


【解决方案1】:

1) 在您的仪表板中,转到设置 -> 常规并确保

a) wordpress 目录 -> http://mydomain.com/wp

b) 网站地址 -> http://mydomain.com

2) 将 index.php 从子目录移动到根目录(移动,不要只是复制)

3) 编辑您的 index.php 以读取

/** Loads the WordPress Environment and Template */
require('./wp/wp-blog-header.php');

其中“wp”是您的子目录

4) 删除子目录中的任何 .htaccess 文件

5) 将此添加到根目录中的 .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

在此设置下,您的 wordpress 安装将位于 /wp/ 目录中。访问者将使用http://mydomain.com 访问您的网站。

如果您想全面了解所有内容,以便准确了解自己在做什么,请阅读https://codex.wordpress.org/Giving_WordPress_Its_Own_Directory

【讨论】:

  • 我知道你的意思。我不能做这样的事情,因为我无法从根目录访问 index.html 文件,它会自动向我显示博客。灵魂应该是具有重写模式的东西。
【解决方案2】:

如果我理解正确 - 所有 wordpress 系统文件都在“wp”文件夹中。
如果是这种情况,您只需将它们拖到主文件夹中,问题就会自行解决。

就帖子类型(博客/howto)而言,如果它们是 wordpress 系统中的帖子类型,则不受实际文件夹的影响,而是受调用 Wildcard DNS 的影响 - 这是一种通过内部值将 url 链接到内容的方法网址。这意味着该文件夹不必存在于服务器内部,而只存在于系统中。

为了解决您的问题,我建议就像我之前所说的那样 - 将文件夹“wp”中的所有文件拖到外面。

之后,您需要使用phpmyadmin或您拥有的任何其他客户端登录数据库并访问:

A) 选择wp_options
B) 查找 siteurl 的 option_name 并从 url 中删除“wp”。 (if it's http://sample.com/wp change it to http://sample.com)
C) 查找 home 的 option_name 并执行相同操作。

编辑:

试试这个:

在您的根目录(“wp”的父级)中,打开 .htaccess 文件并在 mod_rewrite.c 中添加:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?YourDomain.com$
RewriteRule ^(/)?$ wp [L]

YourDomain.com 更改为您的真实域。 这应该工作:)

来源:~here~

【讨论】:

  • 但是如果我将所有内容拖到外部用户将无法访问 html 页面,对吗?我只想修改wordpress url,代替localhost/wp/blog,localhost/blog,不修改文件夹结构。我这样做了,但它没有显示帖子,只是 404 错误页面
  • 链接是localhost/wp/...,因为 wp 是 static 链接,而不是 wordpress 在里面。这意味着 wordpress 的根是:localhost/wp/。我告诉你要做的是将根文件夹更改为站点的根目录。你是否按照我告诉你的那样更改了数据库中的设置?
  • 我无法修改服务器上的文件夹。您了解我的问题,但我想将文件保留在 /wp/ 中,但 url 应该没有“/wp/”
猜你喜欢
  • 2014-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多