1

我有两个文件夹:

/forum/admin
/forum/adminhide

我想在论坛文件夹中有一个.htaccess 文件,它将在内部将除/admin 上的index.php 之外的所有内容重写为/adminhide。

例子:

http://website.com/forum/admin/index.php -> don't do anything
http://website.com/forum/admin/image.png -> internal rewrite to http://website.com/forum/adminhide/image.png

到目前为止,我所有的尝试都只产生了服务器内部错误。

4

1 回答 1

1

这可能有效(在根级 .htaccess 文件中):

RewriteRule ^forum/admin/index\.php$ - [S=1]
RewriteRule ^forum/admin/(.*) forum/adminhide/$1

任何匹配第一个规则的 URL 都不会被重写(因为替换具有魔法值-),并且[S=1]如果第一个规则匹配,则该标志会导致下一个规则(实际重写)被跳过。

请注意,这从字面上解释了您的要求:每个以开头的 URL 路径forum/admin/都被重写,除了forum/admin/index.php. 您可能更愿意将第一条规则更改为更宽松的规则,例如:

RewriteRule ^forum/admin/(index\.php(/.*)?)?$ - [S=1]

这也将匹配(并因此从重写中排除)URL 路径forum/admin/forum/admin/index.php/whatever.


编辑:如果要将 .htaccess 文件放在文件forum夹中,只需forum/从规则中删除首字母并RewriteBase适当设置:

RewriteBase /forum/

RewriteRule ^admin/index\.php$ - [S=1]
RewriteRule ^admin/(.*) adminhide/$1
于 2012-12-30T12:04:12.067 回答