WordPress在特定子目录中,隐式不是根目录

时间:2013-07-09 作者:dmanexe

我现在在我的网站根目录下运行了一个现有的应用程序。使用。htaccess,一个Wordpress安装是否可以管理子目录?例如,/press/、/careers/、/blog/将由Wordpress提供服务。问题是我不想让Wordpress从根上得到服务。我怀疑permalinks和。htaccess。

我们这里的选项2是在我们的应用程序中构建CRUD,但我们确实想使用Wordpress(对于某些页面)。

3 个回复
SO网友:Georgi Demirev

尝试以下操作:

重命名索引。php(在WordPress根文件夹内)来索引\\。php或wordpress\\u索引。php之类的。这样,您可以加载当前应用程序,而不是WordPress索引。之后,打开。在编辑器中使用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
对此:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wordpress_index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress_index.php [L]
</IfModule>
# END WordPress
上面写着索引。php将其更改为索引文件的新名称。这样,所有其他页面和永久链接都可以工作,但您的索引将是您的旧应用程序。

注意:user35541的解决方案很好,但每次您想添加另一个页面时,都必须再次手动将其添加到。htaccess。此外,如果user35541关于编辑核心文件不好的说法是正确的,那么WP就不会有插件(实际上是间接编辑核心文件)。直接编辑核心文件的唯一问题是,如果您进行更新,它们将被覆盖,但由于您正在重命名文件(或创建一个新文件,如果您愿意的话),因此不会受到影响。

SO网友:gmazzap

修改(甚至重命名)WP核心文件从来都不是一个好的做法。

请尝试以下操作:

将Wordpress安装在站点根目录的物理子文件夹中(例如/WP)。

之后,在。htaccess文件在站点根文件夹中插入如下内容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule blog/(.*) WP/press/$1 [L]
RewriteRule press/(.*) WP/press/$1 [L]
RewriteRule careers/(.*) WP/careers/$1 [L]
RewriteRule anything_here/(.*) WP/anything_here/$1 [L]
</IfModule>
当然,可以为您想与wordpress一起使用的每个(虚拟)子文件夹添加重写规则。虚拟子文件夹可以表示wordpress中的页面、类别或任何其他内容。

别忘了enable pretty permalinks in wordpress.

这样,只有您当前的应用程序驻留在根文件夹中,并且所有内容都可以很好地组织和维护。

更新:在此解决方案中,添加新的WP页面意味着添加新的。htaccess规则。解决方法是使用常规父页面:创建一个名为“Pages”(slug“Pages”)的页面,然后每隔一个页面创建一个作为该页面子页面的页面。

在里面htaccess添加:

RewriteRule pages/(.*) WP/pages/$1 [L]
现在,“页面”的每个子页面(甚至孙子页面)都将得到正确的服务。

SO网友:Matthew Boynes

您可以使用Apache的mod_alias 为了实现这一点。继续之前,请确保您的服务器已安装。最简单的方法是打开apache配置并搜索“alias”。您应该有这样一行,未注释:

LoadModule alias_module libexec/apache2/mod_alias.so
接下来,在apache配置(或相关站点的虚拟主机配置)中,添加以下块,将“/var/www/wordpress”替换为wordpress安装的路径:

aliasMatch ^(/wp-.*) /var/www/wordpress$1
aliasMatch ^/(blog|careers|press).* /var/www/wordpress/index.php
<Directory /var/www/wordpress>
    Options Indexes MultiViews FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
重新启动apache,就像变魔术一样,它应该可以正常工作!

结束

相关推荐

多部分表单和wp_reDirect()

对于初学者来说,它是一个插件(带有一个短代码),或者至少我更喜欢它。我有两个问题都与wp\\U direct有关。如果表1验证,我想重定向到表2,并继续该过程。如果访问者在没有填写表格1的情况下尝试从表格2开始,那么我想将他们重定向回表格1。我已经尝试了许多不同的方法,我仍然得到“无法修改标题”。即使当\\uu construct()使用add\\u操作“send\\u headers”时,我仍然会收到标头错误。如何验证表单、重定向并显示第二个表单。这似乎并不是一种预先的需要。然而,我花了一天的大部分时间