我如何组合这些.htaccess命令?

时间:2012-07-25 00:39:57

标签: apache .htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC]
RewriteRule ^(.*)$ http://yourdomain.com/$1 [L,R=301]

用于www /非www重定向的那些

这是我的维护页面

ErrorDocument 503 /system/maintenance.html
RewriteEngine On
RewriteCond %{REQUEST_URI} !.(css|gif|jpg|png)$
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$  -  [redirect=503,last]

谢谢!

1 个答案:

答案 0 :(得分:1)

这取决于您首先要应用哪一个,以及RewriteBase是否可以应用于这两组规则(我假设它可以,因为第二条规则并不真正关心基数是什么)。您还可以删除重复的RewriteEngine On指令:

# this is more or less something separate from rewrite engine
ErrorDocument 503 /system/maintenance.html

# turn on the rewrite engine
RewriteEngine On
RewriteBase /

# do www to non-www redirect
RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC]
RewriteRule ^(.*)$ http://yourdomain.com/$1 [L,R=301]

# Handle maintenance
RewriteCond %{REQUEST_URI} !.(css|gif|jpg|png)$
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$  -  [redirect=503,last]

此订单意味着即使维护,非www的www仍然会发生。如果他们是相反的方式,无论主机名是www还是非www,都可以得到维护。