1

我有以下重写设置:

RewriteEngine on

RewriteRule ^(.*)/$ $1.php

RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^(\w+)\.php$ /$1 [R=301]

RewriteRule ^(\w+)/?$ /$1.php

我正在尝试将我的/admin子目录下的任何页面(即/admin/index.php/admin/users.php等)默认为/admin/.

我想我可以添加以下内容:

RewriteRule ^admin/(\w+)\.php$ /admin/ [R=301]

在我现有的 301 重写规则之后,但它只是创建了一个循环。

自从我编写这些规则以来已经有一段时间了,所以我几乎不记得我的 mod 重写以及我是如何创建它们的。(不是我的强项。)关于如何解决这个问题的建议?

谢谢!

4

2 回答 2

1

这应该是您完整的 .htaccess:

RewriteEngine on

RewriteRule ^(admin)/[^.]+\.php$ /admin/ [NC,L,R=301]

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]
于 2013-11-05T18:05:57.183 回答
0

你应该使用:

RewriteRule ^(\w+)/admin/(\w+)\.php$ http://yourdomain/admin/ [R=301]
于 2013-11-05T18:01:41.137 回答