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登录屏幕,但是在输入我的凭据后,会显示相同的登录表单-就像我只是刷新页面一样。
在第一次进入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_SITEURL
和wp-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 );
答案 0 :(得分:0)
我有同样的问题。您可能已更改为https? 解决方案在数据库中。
在某些情况下,可以从您的域内部看到您的博客,但不能从外部看到。按照上述有关更改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文件夹