Articles of mod rewrite

“ajp_read_header:ajp_ilink_receive失败”

我们在Tomcat 7.0.33之前有Apache 2.2.24。 我们使用APR / nativeconfiguration的AJP连接器。 我最近注意到Apache访问日志中有500个错误,对一个特定资源的一小部分(0.3%)请求。 对于这500个响应中的每一个,Apache错误日志中都有一对相应的错误行 [Wed Mar 06 04:07:42 2013] [error] ajp_read_header: ajp_ilink_receive failed [Wed Mar 06 04:07:42 2013] [error] (70007)The timeout specified has expired: proxy: read response failed from (null) (*) logging错误的时间在logging请求的时间之后5:06和5:07分钟之间。 匹配设置的Timeout 300指令。 没有任何东西logging在Tomcat的访问日志,所以我假设请求永远不会到达那里。 据推测,资源存在一些性能问题(它进行了数据库更新,负载相当高),但我更关心的是了解Apache和Tomcat之间的通信。 在什么时候请求超时? (连接,阅读等) 我有什么select来监控ajp连接的数量? 我有什么选项来configurationApache和Tomcat来改善这种情况 Apache使用带有[proxy,last]标志的重写规则进行configuration。 Tomcat连接器看起来像 <Connector port="8014" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> 就像我之前所说的,我将分别解决Tomcat资源上的瓶颈问题。

在httpd.conf中重写不起作用

我的httpd.conf有: <Directory "/var/www/site"> AllowOverride All RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^site.com [NC] RewriteRule ^(.*)$ https://www.site.com/$1 [L,R=301] RewriteCond %{HTTPS} off RewriteRule (.*) https://www.site.com/$1 Allow from all SetEnv ENV production </Directory> 我想redirect所有非www到www和一切到https。 但是,这似乎什么都不做

Apache限制域

我想configurationApache(2.2)来限制用户可以访问的域名,例如,如果apache FQDN是myapache.myfunnydomain.com,那么apache将只允许请求资源在.myfunnydomain.com(或任何域我configuration为合法)和拒绝所有其他请求(redirect到错误页面) 用例是: 用户尝试访问受限资源 我使用OpenAm / OpenAm policyAgent进行身份validation(PolicyAgent安装为监听所有stream量的Apache模块) OpenAm policyAgent模块拦截此并将用户redirect到login页面 此login页面的url格式为www.loginpage.com/?goto=originallyrequestedresource.com 一旦用户按下login,这个POST就会进入并行的OpenAM系统 一旦OpenAM进行身份validation,使用此转到用户redirect到'goto'的值(使用302) 我想确保用户永远不会被redirect到除我允许的域以外的域 比如有人攻击系统并设法改变goto的值,那么apache将不允许这个请求成功

与.htaccess中的3个不同的RewriteRules冲突?

我在我的.htaccess文件中使用下面的。 有3种types的redirect: redirect到目录/admin/index.php redirect到特定的.php文件,例如/ about redirect到/ John的用户个人资料页面 所有3个工作在我的本地环境,但在服务器上只有1和3的作品。 我真的很感激,如果你能告诉我为什么URLredirecttypes“/约”不适合我。 非常感谢。 <IfModule mod_rewrite.c> Options -Multiviews Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteRule ^admin$ /admin/index.php [QSA,L] RewriteRule ^about/?$ /about.php [NC,L] RewriteRule ^es/?$ /index.php?lang=2 [NC,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([_A-Z0-9a-z-+\.]+)/?$ /public_profile.php?id=$1 [L] </IfModule> ErrorDocument 404 /404.php

大量虚拟主机和子域名

我试图设置零configurationnetworking开发环境:通配符DNS和dynamic虚拟主机。 这是我的v主机configuration: NameVirtualHost *:80 <VirtualHost *:80> ServerAlias *.dev VirtualDocumentRoot /var/sites/%-2/docs UseCanonicalName Off </VirtualHost> 在这一点上一切都好,但现在我试图build立与后备的dynamic子域: test.dev → /var/sites/test/docs sub.test.dev → /var/sites/test/sub dontexist.test.dev → /var/sites/test/docs 目录结构: var |–sites |–test |–docs |–sub 我目前的尝试: <Directory "/var/sites"> RewriteEngine On RewriteCond %{ENV:REDIRECT_SUBDOMAIN} ="" RewriteCond %{HTTP_HOST} ^([a-z0-9][-a-z0-9]+)\.([a-z0-9][-a-z0-9]+)\.dev\.?(:80)?$ [NC] RewriteCond %{DOCUMENT_ROOT}/%2/%1 -d RewriteRule ^(.*) /%2/%1/$1 [E=SUBDOMAIN:%1,L] </Directory> 现在堆放在: [perdir /var/sites/] strip per-dir prefix: […]

htaccess – 通配符子域到子文件夹

所以这个想法是我有: domain.com/.subdomains/domain1 (2,3,4,etc) 而我想映射: domain1.domain.com -> domain.com/.subdomains/domain1/ domain2.domain.com -> domain.com/.subdomains/domain2/ 但是我希望它忽略“www” 我这样做是半成功的: RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com [NC] RewriteRule ^(.*)$ http://domain.com/.subdomains/%1/$1 [NC,QSA,L,P] 有两个问题: 1)它不会忽略“www” 2)当我去到URL: http://domain3.domain.com/deep/subfolder/here/index.html 它将我redirect到: http://domain.com/.subdomains/domain3/deep/subfolder/here/index.html 我一直在试图find答案,但我找不到任何其他人有这个问题。 有任何想法吗? 谢谢! 编辑: 好吧,似乎我不能使用http,但如果我改变 RewriteRule ^(.*)$ http://domain.com/.subdomains/%1/$1 [NC,QSA,L,P] 至 RewriteRule ^(.*)$ /.subdomains/%1/$1 [NC,QSA,L,P] 它进入一个奇怪的redirect循环

mod_rewriteredirect到不同的虚拟主机

我想要redirect到的主机名如下所示: <VirtualHost *:80> ServerName my.dav.hostname.com ErrorLog /var/log/open-xchange/dav-err.log TransferLog /var/log/open-xchange/dav-access.log <Proxy /> Order allow,deny Allow from all </Proxy> ProxyPass / ajp://localhost:8009/servlet/dav/ smax=0 ttl=60 retry=5 </VirtualHost> 我想做一些事情,如果有人去了一个URL my.hostname.com/dav,我希望它被重写到my.dav.hostname.com ..如果客户端转到/dav以外的URL,他应该不被redirect。 <VirtualHost *:80> ServerName my.hostname.com ErrorLog /var/log/open-xchange/dav-err.log TransferLog /var/log/open-xchange/dav-access.log .. .. </VirtualHost> 我对如何继续下去毫无头绪。 像这样的东西不起作用: RewriteEngine on RewriteRule /servlet/webdav.infostore http://my.dav.hostname.com [L,NE,QSA] 因为它实际上redirect到我不想要的my.dav.hostname.com。 我想要的是为Apache透明地为我做。

mod_rewrite之后的一个cname

我有域名foo.bar.example.com。 foo是bar.example.com下的许多子子域中的一个。 我需要捕获并redirect以“/ special /”开头的foo.bar.example.com上的所有链接。 foo.bar.example.com/asdf < – 不应该redirect foo.bar.example.com/special/asdf < – 应该redirect otherfoo.bar.example.com/special/asdf < – 应该redirect 我在.htaccess中使用了以下代码,将foo.bar.example.com/special/asdf成功redirect到special.example.com/foo/asdf。 RewriteCond %{HTTP_HOST} (.*?)\.bar\.example\.com RewriteRule ^/special/(.*)$ http://special.example.com/%1/$1 [L,NC,QSA] 真棒,一切正常。 有什么问题? 我有很多合作伙伴(this.that.com,silly.billy.com等),已经build立了CNAME的指向我的匹配子子域(that.bar.example.com,billy.bar.example.com等)。 我需要this.that.com/special/asdf也可以redirect到special.example.com/that/asdf,而不需要伙伴做任何额外的修改。 不幸的是,我目前还没有能力testing这个function。 从我所了解的mod_rewrite基于浏览器input的内容而不是它获取到的内容。 如果这是真的,那么我将无法使用我的域名命名标准? 我不能依靠我的合作伙伴来遵循类似的标准。 我怎样才能得到this.that.com/special/asdfredirect到special.example.com/that/asdf?

国防部重写删除目录

我正在运行一个具有如下的.htaccess文件的PHP Web应用程序。 DirectoryIndex index.php <IfModule mod_rewrite.c> RewriteEngine On #RewriteBase / RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ index.php?qa-rewrite=$0&%{QUERY_STRING} [L] </IfModule> 它完美的工作,但谷歌试图浏览我们的url,并寻找http://www.website.com.au/questions/1234/question-name时,实际上他们是在http://www.website.com.au/1234/question-name (删除/questions/ ) 我需要添加到这个.htaccess文件来删除/ questions /? 我想出了这个,但由于某种原因,它会产生一个500服务器错误,当我将它添加到RewriteRule下方和之前</IfModule> RewriteCond %{THE_REQUEST} ^GET\ /questions/ RewriteRule ^questions/(.*) /$1 [L,R=301] 为什么这两个规则不起作用?

服务器,数据库或代码问题? Magento后端重写自己的index.php不工作

我会诚实地承认,我在magento.stackexchange.com交叉发布,但原因是,我认为这是一个服务器故障,现在我正在寻找证据,以呈现给我可怕的托pipe服务提供商,GoDaddy … 当我登入时,突然间,我的巨匠正在做一个梦 mysite.com/mixitup/ login后,它变为 mysite.com/index.php/mixitup/dashboard/index/key/812b0641da…. etc, 但是如果我改变path mysite.com/mixitup/dashboard/index/key/812b0641da… etc 然后显示dasboard,但是在点击任何东西,如目录>pipe理产品index.php再次插入,离开 mysite.com/index.php/mixitup/catalog_product/index/key/f0e2d249eca781e… etc 陡然,这突然影响了一个服务器上的2个独立的magento站点。 他们共享一个.htaccess文件的路线,但是这并没有改变,导致问题。 这是一个godaddy共享服务器,所以我的select是有限的。 任何想法可能改变了这一点? 或如何解决它? 这是我的.htaccess文件的副本(遗憾转储) ############################################ ## uncomment these lines for CGI mode ## make sure to specify the correct cgi php binary file name ## it might be /cgi-bin/php-cgi # Action php5-cgi /cgi-bin/php5-cgi # AddHandler php5-cgi .php ############################################ ## GoDaddy […]