从两个.htaccess
你发布的文件我根本看不到你的网站是如何工作的?!
如果您要求example.com/
(文档根目录)然后根目录中的第二条规则.htaccess
文件将请求直接重写为/subdirectory/index.html
(不是index.php
). 如果/subdirectory/index.html
存在,则提供(非WordPress)文件,否则请参见#2
如果您要求example.com/foo
(其中foo
不映射到文件或目录),则根目录中的第一条规则.htaccess
文件内部将请求重写为/subdirectory/foo
.
此时.htaccess
子目录中的文件将请求重写回/index.php
在文档根目录中(不是子目录)!这会导致404或非WordPress响应,或。。。您已手动创建index.php
在文档根目录中以某种方式启动WP?!
如何编写这些指令取决于文档中是否还有其他需要访问的(非WordPress)站点。然而,这也会改变您应该如何配置WordPress。
在本例中,我假设您只有域example.com
, 在这种情况下,无需检查Host
收割台(RewriteCond
检查的指令HTTP_HOST
).
如果您在子目录中只有WP站点,并且没有提供来自文档根目录的其他文件,并且您希望完全;隐藏(&Q);然后,您可以这样编写指令:
根目录/.htaccess
:
RewriteEngine On
# Unconditionally rewrite everything to the subdirectory
RewriteRule (.*) subdirectory/$1 [L]
The
.htaccess
子目录(下面)中的文件可防止重写循环。
/subdirectory/.htaccess
移除
RewriteBase
指令,并删除
RewriteRule
替换字符串:
# BEGIN WordPress
# :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
或(“WordPress方式”),硬编码
/subdirectory
:
# BEGIN WordPress
# :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /subdirectory
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /subdirectory/index.php [L]
</IfModule>
(The
RewriteBase
指令在上述内容中并不是必需的,但在WordPress教程中通常是这样表达的。)
然后,在设置下>;在WordPress中,您可以将;WordPress地址(URL)";(或WP_SITEURL
常量)和;网站地址(URL)";(或WP_HOME
常量)到站点根https://example.com
(否/subdirectory
).