在 wordpress 上使用 htaccess 将子域路由到子文件夹

J0k*_*r98 8 subdomain wordpress .htaccess

我正在尝试创建一个不更改地址栏即可sub.domain.com显示的子域domain.com/sub

我根据此处提出的其他问题提出了以下 .htaccess 规则:

RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ [NC]
RewriteRule ^((?!sub/).*)$ /sub/$1 [L,NC]
Run Code Online (Sandbox Code Playgroud)

问题是我正在使用 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

RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ [NC]
RewriteRule ^((?!sub/).*)$ /sub/$1 [L,NC]
Run Code Online (Sandbox Code Playgroud)

但是当我浏览 sub.domain.com 时,我正从 WordPress 重定向到我的主页 (domain.com)。我怎样才能正确地做到这一点?


试图将其更改为:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ [NC]
RewriteRule ^((?!sub/).*)$ /sub/$1 [NC]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
</IfModule>
Run Code Online (Sandbox Code Playgroud)

但它仍然无法正常工作

Abh*_*jar 2

您必须在 apache 配置中创建虚拟主机。

<VirtualHost *:80>
    ServerName sub.domain.com
    DocumentRoot /var/www/sub
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

或者VirtualDocumentRoot如果 mod_vhosts_alias 已启用。

<VirtualHost *:80>
    ServerName sub.domain.com
    ServerAlias *.domain.com
    VirtualDocumentRoot /var/www/%1
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

在上面我将其指向 /sub 目录(如果存在)。完成所有更改后重新启动服务器。