子文件夹/ wp-admin重定向中的Wordpress问题

时间:2018-12-09 16:08:04

标签: php wordpress .htaccess

Wordpress网站安装在子文件夹中,我们称其为my_site

访问域名(例如https://example.com)时,我需要网站加载子文件夹的内容,因此,我像这样设置了.htaccess文件:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/my_site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /my_site/$1 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteRule ^(/)?$ my_site/index.php [L]

现在,就内容和网站整体而言,一切正常。问题在于尝试直接进入https://example.com/wp-admin

登录WP仪表板

浏览器确实会加载标准的WP登录屏幕,但是在输入我的凭据后,会显示相同的登录表单-就像我只是刷新页面一样。

在第一次进入https://example.com/wp-admin URL和尝试登录后,当我遇到“类似于浏览器刷新”的行为时,浏览器中的URL字符串会自动设置为:

https://example.com/wp-login.php?redirect_to=https%3A%2F%2Fexample.com%2Fmy_site%2Fwp-admin%2F&reauth=1

相同的URL解码:

https://example.com/wp-login.php?redirect_to=https://example.com/my_site/wp-admin/&reauth=1

显然,问题在于my_site参数后面附加了redirect_to,但是我不知道如何摆脱它。

非常感谢您的帮助!

P.S。在WP_HOME中设置WP_SITEURLwp-config.php变量是这样的(同时定位到http和https):

$hostname = isset( $_SERVER['HTTPS'] ) && strtolower( $_SERVER['HTTPS'] ) == 'on' ? 'https' : 'http';
$hostname .= '://' . $_SERVER['HTTP_HOST'];
define( 'WP_HOME', $hostname );
define( 'WP_SITEURL', $hostname );

2 个答案:

答案 0 :(得分:0)

我有同样的问题。您可能已更改为https? 解决方案在数据库中。

wordpress official site

在某些情况下,可以从您的域内部看到您的博客,但不能从外部看到。按照上述有关更改wp-options MySQL表的说明,仍然可能导致登录失败。

在这种情况下,请仔细检查您的wp-options表siteurl(WordPress地址URL)和home(博客地址URL)值,以确保它们引用的是相同的基本外部可用地址;即http://blog.yourdomain.com。标准安装可能会将它们设置为您的本地(内部)主机名,例如http://servername

另一个问题可能是,如果您将wp-options表siteurl(WordPress地址URL)和home(博客地址URL)设置为非www,则使用.htaccess将非www url前缀重定向到www。字首。因此,这将导致您需要避免的无限循环。一种方法是通过在行前放置#或完全删除条目并尝试再次登录来暂时禁用.htaccess重定向。高级用户可能希望通过数据库调整wp-options表的siteurl(WordPress地址URL)和home(博客地址URL)。请注意,如果您从www重定向到非www,但您的wp-options表siteurl(WordPress地址URL)和home(博客地址URL)设置了www url前缀,也会发生此问题。

答案 1 :(得分:0)

嘿,您需要像这样从RewriteCond中删除(www。)?

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^example.com$
RewriteCond %{REQUEST_URI} !^/my_site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /my_site/$1 
RewriteCond %{HTTP_HOST} ^example.com$ 
RewriteRule ^(/)?$ my_site/index.php [L]

秒,如果您通过URL Decoder解码URL,则

https://example.com/wp-login.php?redirect_to=https%3A%2F%2Fexample.com%2Fmy_site%2Fwp-admin%2F&reauth=1

您会注意到 my_site ,这是不允许重定向到wp仪表板的根本原因,因为在htaccess中,您只能使用 example.com

一旦您从网址中删除了 my_site%2F 并重新提交了登录表单,您肯定会重定向到仪表板。

现在,您只需要将URL配置为重定向到wp-admin,以使其不包含实际的wordpress文件夹