重定向规则不起作用

时间:2012-08-10 17:47:27

标签: .htaccess rewrite rule

我正在尝试将wordpress默认登录(wp-logiin.php)网址重定向到登录但不知何故它无效。我之前从未做过.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

非常感谢

2 个答案:

答案 0 :(得分: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个字符= 8x重复)。
正确的版本是:RewriteRule ^。* $ /newsite/index.php [L]

答案 1 :(得分:1)

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

RewriteRule ^signin$ /newsite/wp-login.php [NC,L,R]