.htaccess 将现有的WP站点从插件域移动到主域的子文件夹

kcwpcxri  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(85)

在一个cPanel共享帐户中,我有一些插件域,它们像往常一样安装在自己的子文件夹中,主域安装在根目录下。
这个主域(目前托管一个静态HTML -非WordPress -网站)正在下降,所以我将不得不改变主和切换到一个插件域。
当它将成为主域时,我应该如何编辑它的.htaccess文件以正确指向子文件夹?
当前/subfolder中的.htaccess通常是:

# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

字符串
尚未尝试,因为主域尚未更改。

iibxawm4

iibxawm41#

要更新/subfolder/.htaccess文件,最好更新WordPress Jmeter 板中“常规设置”中的“WordPress地址(URL)”(WP_HOME)和“站点地址(URL)”(WP_SITEURL)选项。(或者直接在wp-config.php中设置WP_HOMEWP_SITEURL常量。)例如:

define('WP_HOME','https://example.com/subfolder');    // WordPress Address
define('WP_SITEURL','https://example.com');           // Site Address

字符串
其中WP_SITEURL是用户在浏览器地址栏中看到的基本URL,WP_HOME是WordPress核心文件的位置,WP实际安装的位置。
然后应该相应地更新/subfolder/.htaccess

# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /subfolder
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /subfolder/index.php [L]
</IfModule>
# END WordPress

  • 旁白:* 但是,如果您手动编写.htaccess文件,则可以使用以下代码,因为没有 * 需要 * 在此文件中显式引用/subfolder(或使用RewriteBase)。举例来说:
RewriteEngine On

RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]


然后,您需要更改根.htaccess文件,以便将所有请求直接指向/subfolder。举例来说:

RewriteEngine On

RewriteRule (.*) subfolder/$1 [L]


注意 substitution 字符串上没有斜杠前缀。
(The在/subfolder中存在站点的.htaccess文件可以防止rewrite-loop,因为默认情况下mod-rewrite不会被继承。
所以现在,当/foo的请求进来时,根.htaccess文件在内部将请求重写到/subfolder/foo/subfolder/.htaccess接管并通过WordPress(在子文件夹中)路由请求。

相关问题