Apache-2.2

在htaccess中放置什麼順序規則重要嗎?

  • July 12, 2019

我希望這是一個簡單的“是”或“否”答案(請說明原因)

Q1:規則在 htaccess 中的放置順序是否重要? 因為它們是完全分離的項目:例如

Q2:如果是,我申請的順序是否正確? 為了加速 htacces 引擎而不是用不必要的規則使其超載?

Q3:任何關於在這裡禁用/添加什麼的提示都非常歡迎+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 文件使用與正常 Apache 配置文件相同的格式,因此適用相同的規則。

大多數配置設置不依賴於順序,但有些依賴 - 取決於設置。

RewriteRule並且RewriteCond例如對訂單敏感,所以在這種情況下答案是肯定的。

參見例如

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

有關評估這些順序的說明。

這很重要。引用RewriteRule 的文件

定義這些規則的順序很重要——這是它們在執行時應用的順序。

引用自:https://serverfault.com/questions/213191