重写逻辑,有没有更好的方法来做到这一点?

Posted

技术标签:

【中文标题】重写逻辑,有没有更好的方法来做到这一点?【英文标题】:Rewrite Logic, is there a better way to do this? 【发布时间】:2011-03-10 09:19:38 【问题描述】:

我很好奇,有没有更有效的方法来执行以下操作?现在它工作得很好,只是看起来有点矫枉过正......

RewriteEngine On

RewriteCond %REQUEST_FILENAME !\.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf)$
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-l
RewriteCond %HTTP_HOST !^www\.clientcollabhq\.com$ [NC]
RewriteCond %HTTP_HOST ^(www\.)?([^\.]+)\.clientcollabhq\.com$ [NC]
RewriteRule ^(.+)$ /index.php?subdomain=%2&kohana_uri=$1 [PT,L,QSA]

RewriteCond %REQUEST_FILENAME !\.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf)$
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-l
RewriteRule ^(.+)$ /index.php?kohana_uri=$1 [PT,L,QSA]

问候, 安德鲁

【问题讨论】:

【参考方案1】:

您可以使用反转形式的常见条件作为中断/跳过规则的条件:

# stop processing if one of these conditions are fulfilled
RewriteCond %REQUEST_FILENAME \.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf)$ [OR]
RewriteCond %REQUEST_FILENAME -f [OR]
RewriteCond %REQUEST_FILENAME -d [OR]
RewriteCond %REQUEST_FILENAME -l
RewriteRule ^ - [L]

RewriteCond %HTTP_HOST !^www\.clientcollabhq\.com$ [NC]
RewriteCond %HTTP_HOST ^(www\.)?([^\.]+)\.clientcollabhq\.com$ [NC]
RewriteRule ^(.+)$ /index.php?subdomain=%2&kohana_uri=$1 [PT,L,QSA]

RewriteRule ^(.+)$ /index.php?kohana_uri=$1 [PT,L,QSA]

现在每个符合这些条件之一的请求都会应用此规则,从而结束重写过程。

【讨论】:

以上是关于重写逻辑,有没有更好的方法来做到这一点?的主要内容,如果未能解决你的问题,请参考以下文章

将“this”传递给新对象的内联重写方法的正确方法是啥? [复制]

存储过程花费的时间太长,有没有更好的方法来做到这一点/优化?

添加和删​​除文件以不完全重写文件的最有效方法是啥?

有很多:通过,更好的方法来做到这一点?

jQuery Hide/Show with Slide on Hover...更好的方法来做到这一点?

如何重写此 Textarea 组件以重新组合?