子文件夹中的WP被htaccess隐藏,但媒体链接显示该子文件夹

时间:2018-01-25 作者:BaliBriant

WordPress安装位于/public_html/example. 在.htaccess 文件位于public_html 我有以下代码:

# 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
在中/public_html/example 我有完全相同的文件。

因此,当我访问该网站时,所有页面都有URL,例如http://example.com/about. 中指定的URL重写.htaccess 正在工作。但是重写对媒体文件不起作用,这些文件都有如下链接http://example.com/example/wp-content/uploads/2018/01/hello.txt.

我的问题:是否可以获取文件链接,例如http://example.com/wp-content/uploads/2018/01/hello.txt (不重复“示例”)?

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

一个选项是将wp content文件夹显式上移一级,使其位于/public_html/wp-content 通过定义WP_CONTENT_DIR 在里面wp-config.php.

为此,我推荐一些更像中描述的第二种方法Giving WordPress Its Own Directory. Editing wp-config.phpWP_CONTENT_DIR 改变

生成的目录结构(相对于public_html 如下所示:

- .htaccess
- index.php
- wp-content
  - ...
- example
  - wp-admin
  - wp-includes
  - ...
奖金:

您可以使用.htaccess 与此文件类似的文件:

RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) example/$1 [L] # your WP folder
RewriteRule ^(.*\\.php)$ wp/$1 [L]
RewriteRule . index.php [L]
这样,您可以将主页URL和网站URL设置为https://example.com (无/example, 因此,乍一看WordPress是否安装在子文件夹中并不清楚。然后,您可以通过https://example.com/wp-admin/

这样的设置在使用Composer时特别有用,WordPress最好安装在Rarst中描述的子目录中Composer in WordPress 指导

结束