0

我想将重写重定向/zp-core/admin.php到,admin但不知何故我无法让它工作。

我已将此规则添加到我的 htaccess 中:

RewriteEngine On

RewriteBase /

RewriteRule ^/admin$ /zp-core/admin.php [L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^albums/?(.+/?)?$ $1 [R=301,L] 
...
# Catch-all - everything else gets handled in PHP for compatibility.
RewriteRule ^(.*)/?$                        index.php?album=$1 [L,QSA]

第三条规则应该这样做,但不知何故它没有。最后,它回到了捕获所有规则

4

1 回答 1

1

当您说“将A重写为B ”时,通常,“A”是用户键入的内容,而“B”是您希望他获得的内容。

如果 A=' /admin' 和 B=' /zp-core/admin.php' 那么第一个规则是可以的,如果你删除其他规则,它会起作用。

问题是 - apache 会在每个请求(包括子请求)上查看 .htaccess,并且您的重定向会执行子请求......所以它不再匹配第一条规则,但随后出现了包罗万象的规则,它再次匹配(您会看到在此类请求中点击 index.php 时$_GET["album"]会匹配。/zp-core/admin.php

您需要做的是添加RewriteCond检查 uri 不是/zp-core/admin.php或您不在子请求中...

任何一个:

RewriteCond %{REQUEST_URI} !^/zp-core/admin.php$

或者:

RewriteCond %{IS_SUBREQ} !=true
于 2012-08-13T13:13:39.140 回答