htaccess用条件重写

时间:2011-05-14 19:14:31

标签: .htaccess

使用我的htaccess文件,我想要实现的是:

  • 所有不属于以下划线或命名为admin的子目录的请求都应重定向到index.php
  • 作为admin子目录但不以下划线开头的所有请求都应重定向到admin / index.php

示例:
http://www.example.com/controller/method - > http://www.example.com/index.php
http://www.example.com/_css/style.css - >没有重定向
http://www.example.com/admin/ - >没有重定向
http://www.example.com/admin/controller/method - > http://www.example.com/admin/index.php
http://www.example.com/admin/_js/script.js - >没有重定向

我有时会让它部分工作,但它并不漂亮。

我不认为这很难,但我无法修改网络上列出的任何示例以使用此方案。

2 个答案:

答案 0 :(得分:0)

那不是那么难,但请检查一下

尾随斜线的是什么?你有它还是总是被删除?

RewriteRule ^admin/([^_].*)[^/]$ admin/index.php [L,QSA]
RewriteRule ^([^_][^admin].*)/([^_].*)$  index.php[L,QSA]

答案 1 :(得分:0)

我认为以下规则适合您:

Options +FollowSymlinks -MultiViews
RewriteEngine on

RewriteCond %{REQUEST_URI} !^/*(_|admin/?) [NC]
RewriteRule . index.php [L]

RewriteCond %{REQUEST_URI} !^/*admin/($|index\.php|_) [NC]
RewriteRule ^(admin/.+)$ admin/index.php?p=$1 [L,NC]