首页 文章

子文件夹和mod重写

提问于
浏览
1

我需要更改当前的重写规则以适应管理员文件夹 . 这是我目前的mod-rewrite代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]+?)/([a-z]+?)/(.*)$ index.php?model=$1&view=$2&params=$3 [L,NS]

我有这个文件夹结构:

ROOT:  http://www.domain.com/
ADMIN: http://www.domain.com/admin/

如果.htaccess文件位于“admin”文件夹中,则它可以正常工作 . 我明白了:

URL: http://domain.com/admin/faq/edit/13/asc
(NOTE: http://domain.com/admin/.htaccess)
Array
(
    [model] => faq
    [view] => edit
    [params] => 13/asc
)

但是,当它在根文件夹中时,我得到:

URL: http://domain.com/admin/faq/edit/13/asc
(NOTE: http://domain.com/.htaccess)
Array
(
    [model] => admin
    [view] => faq
    [params] => edit/13/asc
)

我希望mod-rewrite能够识别admin文件夹并且是一个实际的目录并使用单独的重写规则 .

提前致谢 .

2 回答

  • 0

    将其添加到您的根目录.htaccess:

    RewriteCond ^admin/
    RewriteRule (whatever rule you need for the admin folder) [L]
    

    RewriteEngine On 之后添加此权限 . 这里的关键点是 [L] ,它告诉mod-rewrite在这个匹配的情况下停止执行其余的规则 . 如果您需要管理文件夹的多个规则,只需添加更多RewriteRule语句,但请记住只将 [L] 添加到最后一个 .

    应该这样做 .

  • 2

    RewriteCond ^admin/
    RewriteRule (your Rule) [L]
    

    在另一个条件之前 . 这应该够了吧 .

    另一种方法是直接在规则中包含条件

    RewriteRule ^admin/(rest_of_regex)$ (regex_stuff) [L]
    

相关问题