0

我正在尝试将 wordpress 默认登录 (wp-logiin.php) url 重定向到登录,但不知何故它不起作用。我以前从未做过这个 .htaccess 重写规则,所以不知道它是如何工作的。

# BEGIN WordPress
RewriteRule ^signin$ http://localhost/newsite/wp-login.php [NC,L,R]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /newsite/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /newsite/index.php [L]
</IfModule>

# END WordPress

大大大大谢谢

4

2 回答 2

2

尝试阅读手册 :) http://httpd.apache.org/docs/current/mod/mod_rewrite.html


首先,如果要使用“重写”,必须先定义条件,然后是规则,如果条件满足则使用规则。例如:

RewriteCond %{HTTP_USER_AGENT} ^facebookexternalhit [OR,NC]
RewriteCond %{HTTP_USER_AGENT} ^Zeus [NC]
RewriteRule ^.* /errors/404.html [F]

RewriteRule ^signin$ http://localhost/newsite/wp-login.php [NC,L,R]<br>

在没有定义 RuleCondition 的情况下使用 RewriteRule,因此恕我直言,永远不会使用此规则。


RewriteCond %{REQUEST_FILENAME} !-f<br>
RewriteCond %{REQUEST_FILENAME} !-d<br>
RewriteRule . /newsite/index.php [L]<br>

正如手册所说的“模式是与 perl 兼容的正则表达式”。,因此单个“。” 因为模式意味着一个字符。因此,如果请求文件名是“test.txt”,它将用“/newsite/index.php”替换每个字母(8 个字符 = 8 次重复)。
正确的版本是:RewriteRule ^.*$ /newsite/index.php [L]

于 2012-08-10T18:33:19.190 回答
1

您将登录重定向到 localhost,因此除非您使用运行 wordpress 站点的同一台计算机上的浏览器,否则您可能会遇到连接错误。尝试从您的规则中删除 http:// 位:

RewriteRule ^signin$ /newsite/wp-login.php [NC,L,R]
于 2012-08-10T18:04:48.227 回答