Performance 启用Mod_重写引擎可将我专用的盒子怪兽变慢为爬行

Performance 启用Mod_重写引擎可将我专用的盒子怪兽变慢为爬行,performance,apache,mod-rewrite,timeout,Performance,Apache,Mod Rewrite,Timeout,我一直在为我购买的一个脚本的.htaccess问题进行故障排除,这给我带来了不少麻烦。如果我启用了重写功能,并使用Blitz.io进行1-250测试,那么在所有请求超时之前,它将发送给大约5个用户。当这个事件发生时,我看不到服务器资源争用,但我偶尔也会看到Apache中我使用了最大连接数的事件。这不可能是正确的,因为我已将其设置为处理数千个连接 进一步支持重写理论,如果我禁用重写并对同一个php页面运行Blitz,它将在没有任何重大错误或超时的情况下完成测试(它还破坏了大部分脚本:)。我还注意到

我一直在为我购买的一个脚本的
.htaccess
问题进行故障排除,这给我带来了不少麻烦。如果我启用了重写功能,并使用Blitz.io进行1-250测试,那么在所有请求超时之前,它将发送给大约5个用户。当这个事件发生时,我看不到服务器资源争用,但我偶尔也会看到Apache中我使用了最大连接数的事件。这不可能是正确的,因为我已将其设置为处理数千个连接

进一步支持重写理论,如果我禁用重写并对同一个php页面运行Blitz,它将在没有任何重大错误或超时的情况下完成测试(它还破坏了大部分脚本:)。我还注意到,在关闭重写的情况下,我在Blitz中的响应时间最多约为250ms,而如果启用重写引擎,响应时间将上升到1秒

如果您有任何建议,我将不胜感激,我已经搜索了很多次了,但没有找到太多,即使我是一个重新编写的n00b

提前谢谢,现在我要去冰我的头

    # enable apache morRewrite module #
    RewriteEngine on

    RewriteBase /

    # set files headers
    <IfModule mod_headers.c>
    <FilesMatch "\.(css|js|png|gif|jpg|jpeg|htc)$">
    Header set Cache-Control "max-age=2678400, public, must-revalidate"
    </FilesMatch>
    </IfModule>

    # allow request methods
    <Limit POST PUT DELETE GET OPTIONS HEAD>
       Order deny,allow
       Allow from All
    </Limit>

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f

    ErrorDocument 404 /404.html

    # non last slash redirect
    RewriteCond %{REQUEST_URI} !(\.php|\.html|\.xml|\.txt|[\/])$ [NC]
    RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [NC,L,R=301]

     # define system languages
    #RewriteRule ^([a-zA-Z]{2})$ index.php?page=$1 [QSA,L]

    # define paging
    RewriteRule ^([^//]+)/?(.*)?/index([0-9]*).ht(m?ml?)$ index.php?           page=$1&rlVareables=$2&pg=$3 [QSA,L]

    # define listing
    RewriteRule ^(([\w\-\_]+)?/)(.+)-l?([0-9]+).ht(m|ml)$ index.php? page=$2&rlVareables=$3&listing_id=$4 [QSA,L]

    # wildcard request
    RewriteCond %{HTTP_HOST} ^((?!www\.|m\.|mobile\.).*)\..+\.[^/]+$ [NC]
    #RewriteCond %{HTTP_HOST} ^((?!www\.|m\.|mobile\.).*)\..+$ [NC] # FIRST LEVEL         DOMAIN (localhost) USAGE
    RewriteRule (.*) index.php?page=%1&wildcard&rlVareables=$1 [QSA,L]

    # account request (sub-directory)
    RewriteRule ^((\w{2})/)?([\w-_]{3,})$ index.php?page=$3&lang=$2&account_request [QSA,L]

    # define single pages
    RewriteRule ^([^//]+)/?(^/*)?.ht(m?ml?)$ index.php?page=$1 [QSA,L]

    # define other pages
    RewriteRule ^([^//]+)/?(.*)?/?(.*)?(.ht(m?ml?)|/+)$ index.php?page=$1&rlVareables=$2 [QSA,L]
#启用apache morRewrite模块#
重新启动发动机
重写基/
#设置文件标题
标题集缓存控制“最大年龄=2678400,公共,必须重新验证”
#允许请求方法
命令拒绝,允许
通融
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
错误文档404/404.html
#非最后斜杠重定向
重写cond%{REQUEST_URI}!(\.php\.html\.xml\.txt\[\/])$[NC]
重写规则^(.*)$http://%{http_HOST}/$1/[NC,L,R=301]
#定义系统语言
#重写规则^([a-zA-Z]{2})$index.php?页面=$1[QSA,L]
#定义分页
重写规则^([^/]+)/?(.*)/index([0-9]*).ht(m?ml?)$index.php?页码=$1&rlVareables=$2&pg=$3[QSA,L]
#定义列表
重写规则^([\w\-\\\\\\\+)?/)(.+-l)([0-9]+).ht(m | ml)$index.php?page=$2&rlVareables=$3&listing_id=$4[QSA,L]
#通配符请求
RewriteCond%{HTTP|u HOST}^((?!www\.| m\.| mobile\...*)\...+\.[^/]+$[NC]
#重写COND%{HTTP|U HOST}^((?!www\.| m\.| mobile\..*)\..+$[NC]\一级域(本地主机)使用情况
重写规则(.*)index.php?页面=%1&通配符&rlVareables=$1[QSA,L]
#帐户请求(子目录)
重写规则^((\w{2})/)?([\w-{3,})$index.php?页面=$3&lang=$2&account_请求[QSA,L]
#定义单个页面
重写规则^([^/]+)/?(^/*)?.ht(m?ml?$index.php?页面=$1[QSA,L]
#定义其他页面
重写规则^([^/]+)/?(.*)/?(.*)(.*)(.ht(m?ml?)|/+)$index.php?page=$1&rlVareables=$2[QSA,L]

您是否查看了访问日志和rewrite.logs(如果您可以临时启用后者)

跳出的一件事是家具的标题指令(css、JPEG等),特别是必须重新验证标志。这将强制客户端浏览器为每个图像等发出条件GET。这不是默认行为。浏览器将假定任何静态文件的可缓存寿命为其有效期的10%(也就是说,如果该文件有效期为10周,则浏览器每周仅重新验证该文件一次)。好的,这些GET中的大多数都会导致304个“not modified”响应,但这仍然意味着Apache必须验证这些请求,这很容易将服务器的总体请求速率提高5-10倍

“非最后一个斜杠重定向”将针对除php、html、xml和txt文件(包括jpeg等)以外的所有URI启动。两个请求文件名条件应立即位于请求URI条件之前。即ErrorDocument指令需要上移4行

您还需要使用测试向量签出单个和其他页面regexp。它们是有效的语法,但不会提供我认为您想要的内容(例如,
[^/]
[^/]
.ht(m?ml?
匹配
shtmml
;该^/*可能应该读为
[^/]*
,因此当前该规则仅在
^([^/]+)/?
匹配到空字符串时匹配,从而退化为
(^/*).ht(m?ml?)$


如果我是你,我会要求拿回我的钱:-(

那些规则没有意义。例如,错误的
重写条件…
在ErrorDocument之前,没有重写规则!网站甚至可以使用那些重写规则吗?