Multisite without .htaccess

时间:2018-03-20 作者:Gitnik

我需要使用.htaccess 多站点的文件?我已经安装了基本wordpress站点,并使用apache2 VirtualHost将其配置为:

<VirtualHost *:80>
    ...
    RewriteEngine On
    Options FollowSymLinks

    # THIS REDIRECTS TO HTTPS
    RewriteCond %{SERVER_NAME} =example.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

    DocumentRoot /var/www/example/
    <Directory /var/www/example/>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride All
       Order allow,deny
       allow from all
    </Directory>
</VirtualHost>
<VirtualHost *:443>
    ...
    DocumentRoot /var/www/example/
    <Directory /var/www/example/>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride All
       Order allow,deny
       allow from all
    </Directory>

    SSLEngine on

    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
但是,当我按照步骤启用多站点时,wordpress会提示我将这些选项粘贴到.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).*) $1 [L]
RewriteRule ^(.*\\.php)$ $1 [L]
RewriteRule . index.php [L]
但我没有.htaccess 文件然而,如果我成功了,并且配置了apache,重写规则就不起作用了,例如:。example.com/wp-admin 未重写为wp-admin/ 带有尾部斜杠,但变成了丑陋的长链接:https://example.com/wp-login.php?redirect_to=https%3A%2F%2Fexample.com%2Fwp-admin%2F&reauth=1. 这可能是因为SSL重写规则吗?我的问题是:我需要.htaccess? 我如何使其重写规则起作用?

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

e、 g。wpinstance.com/wp-admin 未重写为wp-admin/ 带有尾部斜杠,但变成了丑陋的长链接:https://wpinstance.com/wp-login.php?redirect_to=https%3A%2F%2Fwpinstance.com%2Fwp-admin%2F&reauth=1

正如评论中已经提到的,这是有意的。这个没有“漂亮”的URL。也不需要这样做-不应将其索引或链接到。

我需要吗.htaccess?

不,你不需要.htaccess.

如果您有权访问服务器配置,则可以将这些指令逐字粘贴到<Directory /var/www/wpinstance/> 容器(内部<VirtualHost *:443> 容器)。

但是,要将这些指令直接粘贴到<VirtualHost> 您需要对容器进行一些更改,因为mod\\u rewrite在服务器上下文中的行为不同(与目录相反,或者.htaccess 上下文)。

请注意,每次更改服务器配置时,都需要重新启动Apache。更改.htaccess 文件

我也会考虑禁用MultiViews - 除非你有什么特别的要求?即移除MultiViewsOptions 指令。(多视图可能与mod\\u rewrite冲突-取决于您正在执行的操作。)

如果您不打算使用.htaccess 然后应禁用文件:

AllowOverride None
<小时>

UPDATE:

我正在使用Apache/2.4.18

请注意OrderAllow Apache 2.4中不推荐使用指令,并将在将来的版本中删除这些指令。您需要更改以下(Apache 2.2及更早版本)指令:

Order allow,deny
Allow from all
阅读:

Require all granted
在Apache 2.4中+

结束

相关推荐

如何使用HTACCESS文件进行301重定向到子页面?

我有2个URL。基本页面和子页面如下。http://example.com/serviceshttp://example.com/services/service-1我想在中添加301重定向规则.htaccess 文件,以便有人打开页面时:http://example.com/services 它应重定向到其子页:http://example.com/services/service-1 我尝试在中创建规则.htaccess 但它将作为其子页进入重定向循环。下面是我的代码.htacce