在htaccess中按照什么顺序排列规则是否重要?

我希望这是一个简单的YES或NO的答案(请说明为什么)

问题1:在htaccess中,规则是按什么顺序排列的? 因为它们是完全分开的项目:例如

Q2:如果是,我是否正确地申请? 为了加快htacces引擎,而不是用不必要的规则超载呢?

问题3:关于在这里禁用/添加的任何提示都非常欢迎+1!


# DirectoryIndex index.php /index.php AddDefaultCharset UTF-8 RewriteEngine on # Options All # Options +FollowSymLinks # Options +FollowSymLinks -Indexes -ExecCGI # RewriteBase / ##################################################### <IfModule mod_headers.c> ExpiresActive On ExpiresDefault M172800 Header unset ETag FileETag None Header unset Pragma ##### STATIC FILES <FilesMatch "\\.(ico|jpg|png|gif|svg|swf|css|js|fon|ttf|eot|xml|pdf|flv)$"> ExpiresDefault M1209600 Header set Cache-Control "public, max-age=1209600" </FilesMatch> ##### DYNAMIC PAGES <FilesMatch "\\.(php)$"> ExpiresDefault M604800 Header set Cache-Control "public, max-age=604800" </FilesMatch> </IfModule> ##################################################### # /page123 and /page123/ will all go to /page123.php RewriteRule ^(.+)/$ /$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php #################################################### # NO WWW http://www. becomes always http:// RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] ############################################################## # add own extensions that will be interpreted as php AddType application/x-httpd-php .php AddType image/svg+xml svg svgz AddType text/css css AddType text/javascript js AddEncoding gzip svgz ############################################################## ErrorDocument 500 / ErrorDocument 404 / 

那么.htaccess文件使用与常规Apacheconfiguration文件相同的格式,所以应用相同的规则。

大多数configuration设置不取决于顺序,但一些做 – 取决于设置。

RewriteRuleRewriteCond例如对命令敏感,所以在这种情况下答案是YES。

见例如

http://wiki.apache.org/httpd/RewriteRule

对这些评估顺序的解释。

这很重要。 引用RewriteRule的文档 :

这些规则的定义顺序非常重要 – 这是在运行时应用这些规则的顺序。

我有同样的担忧张贴,但这是一个服务器pipe理网站的angular度来看,它允许他们在Apache服务器configuration更改后重新启动Apache。

到目前为止,我收到的最好的回应是首先列出文件相关的指令。

这与apache需要pipe理每个目录中的目录和htaccess指令有关。

所以,先列出文件相关的指令,然后按照明显的顺序明显地阻止apache htaccess进程。

可能的解决scheme来优化请求: – 请求URL相关的更正 – 目录相关的限制 – 索引相关限制 – 文件相关的限制 – 代理限制< – 全部杀死 – 空用户代理< – 全部杀死…列表是无尽的乐趣

我关心的是指令的顺序。 例如,我应该在RewriteConds之前设置Index,file和Header指令吗?