将静态HTML文件放置在WordPress页面下的路径中

时间:2017-08-18 作者:Johannes Dorn

我有一个WordPress实例在我的域的根上运行。

一个WordPress页面位于www.example.com/product/.我在下面的路径中放置了一些静态HTML文件,以便访问者可以访问www.example.com/product/documentation/ 其中index.html 和其他HTML文件。

现在我可以很好地访问静态HTML文件,但是当我访问WordPress站点(即。www.example.com/product/), 我得到一个403禁止的错误。

如何在保留对WordPress页面的访问权限的同时,使静态HTML文件在该URL上可用?

这是我的.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内容的问题。

1 个回复
最合适的回答,由SO网友:MrWhite 整理而成

通过创建与(虚拟)WordPress URL相同的物理目录,您已经创建了冲突。URL需要通过WP路由,但默认的前端控制器(.htaccess 上面显示的代码)特别禁止重写物理目录。

出现403禁止错误是因为您没有目录索引文档(例如。index.htmlindex.php) 在/product 子目录。(你也不想要,以防万一。)

根据您的站点,您只需删除前端控制器中的目录检查即可。例如(刚刚注释掉):

RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
这意味着对任何物理目录(仅是裸目录)的请求将无法访问,它们将通过WP传递。然而,这可能与您的/product/documentation/ URL。在这种情况下,可以在上述指令之前添加如下内容:

RewriteRule ^product/documentation/$ /product/documentation/index.html [L]
(否则,如果请求任何物理目录,您将获得WordPress 404,其中URL在WP中不存在。)

或者,您可以显式地为这一个子目录创建一个例外,并通过WP手动路由它(即将其重写为index.php). 例如,在现有前端控制器之前(文件顶部),添加以下内容:

RewriteRule ^product/?$ /index.php [L]

结束

相关推荐

如果我使用Allow IP通过.htaccess拒绝登录页面,如何登录

我正在运行wordpress网站,AIO WP Security&;防火墙插件,通知我是否有错误的登录尝试。/wp admin包含。htaccess设置位置:order deny,allow deny from all allow from 123.123.123.123 // my IP 我仍然收到来自AIO插件的电子邮件,有人试图用不同IP的奇怪用户名登录。除了/wp admin之外,还有其他方法可以获取登录页面并尝试进行身份验证吗??