2011-05-14 79 views
0

随着我的htaccess的文件,我想达到的htaccess重写是这样的:与条件

  • 是不是开始有下划线或名为admin子目录应该被重定向到index.php
  • 所有所有请求是管理的子目录和不请求起动用下划线应重定向到管理/ 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 - >无重定向

我得到了它的部分有时工作,但它并不漂亮。

我不认为这很难,但我还没有能够重做网上列出的任何例子来处理这种情况。

回答

0

那么这不是很难,但请检查它

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

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

是的,它可能会被尾随斜线。尽管看起来好多了,但我仍然可以自己做最好的尝试。然而,当浏览器决定要添加一个尾部空格时,它会打破下划线,不会再工作了。 – Flanders 2011-05-15 09:40:57

+0

那么很容易在htacces文件中添加规则,这样尾部的睫毛就会被删除,是否要添加一个traling斜线或删除它?。哪个代码工作得更好,当然认为它是我的,因为我用anubhava的其他代码得到了一些奇怪的结果 – 2011-05-15 09:45:08

+0

我不确定我想要什么。如果你阅读http://sebastians-pamphlets.com/thou-must-not-steal-the-trailing-slash-from-my-urls/他认为你应该强制结尾的斜线。恰恰相反。我真的觉得很失落。如何不接受www.site.com/admin/.+/$,但www.site.com/.+/$是? – Flanders 2011-05-15 10:22:50

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] 
+0

谢谢。尽管看起来好多了,但我仍然可以自己做最好的尝试。但是,当浏览器决定要添加尾部空格时,它会打破下划线 - 字段不再起作用 – Flanders 2011-05-15 09:40:16