大.htaccess文件

时间:2013-12-25 15:25:54

标签: regex performance .htaccess mod-rewrite

一个大的.htaccess文件是否会降低您的网站性能?我不只是在讨论301重定向,我的.htaccess文件中有很多重写规则:

ErrorDocument 404 /404.php

Options -Indexes
RewriteEngine On

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ /$1 [R=301]

# If request ends in . or .php, redirect to 404
RewriteCond %{THE_REQUEST} [a-z]\.(php)?\sHTTP
RewriteRule !404|checkout - [R=404]

# Removes need for .php extention
RewriteCond %{THE_REQUEST} !/checkout/success
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ ./$1.php

# Prevents 500 internal error for e.g. /index/fakepage
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php !-f
RewriteRule ^(.*)$ - [R=404]

# When user is at /checkout/success
RewriteRule ^checkout/success$ /checkout.php?success

# Force SSL on all pages
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301]

# Automatically includes bootstrap.php
php_value auto_prepend_file "/home/user/public_html/bootstrap.php"

如果有可能,任何人都可以提出一种更有效的方式来做我目前正在做的事情吗?

2 个答案:

答案 0 :(得分:0)

大型.htaccess会降低您的网站效果。空的.htaccess会降低您的网站性能(如果使用的话)。唯一不会降低网站性能的方法是通过在目录配置中设置AllowOverride None来读取.htaccess。可以在.htaccess中完成的所有操作都可以在网络服务器的主要配置中完成。

答案 1 :(得分:0)

虽然任何.htaccess文件都会减慢速度,但在这种情况下花费的额外时间几乎可以忽略不计。

在我的头脑中,我可以想到一种提高性能的方法。 将L flag添加到每个rewriteRule。

示例:

RewriteRule ^(.*)$ - [R=404,L]

L标志就像编程语言中的break语句。但是,您必须要小心,因为在匹配一个规则后不再处理其他规则。