Articles of 重写

.htaccess将http重写为https循环中的结果

在运行清漆的apache 2.2服务器上,我正在尝试将http – >redirect到整个Drupal Commons( http://commons.acquia.com/ )站点的https。 由于清漆caching一些redirect(R = 301,但不是R = 302,我想),我首先得到了我的redirect工作:8080,这不是由清漆服务。 下面的.htaccess代码成功地将http:// foo.example.com:8080redirect到https:// foo.example.com。 (适用于Chrome,FF和Safari) # RewriteBase / ### Standard Drupal7 .htaccess above here ### # SSL REWRITES RewriteCond %{SERVER_PORT} ^8080$ RewriteRule ^(.*)$ https://foo.example.com/$1 [NC,R=302,L] ### Standard Drupal7 .htaccess below here ### # Rewrite URLs of the form 'x' to the form 'index.php?q=x'. RewriteCond […]

在传递给代理Lighttpd之前重写URL

我正在尝试在lighttpd中设置一个反向代理,这样/ mobile / video下的所有请求(只有这些请求)才会被redirect到辅助Web服务器的/目录。 这在Apache中是相当容易的,但我不能在我的生活中弄清楚如何在lighttpd中这样做。 $HTTP["url"] =~ "^/wsmobile/video/" { url.rewrite-once = ( "^/wsmobile/video/(.+)" => "/$1" ) proxy.server = ( "" => ( ( "host" => "210.200.144.26", "port" => 9091 ) ) ) } 我已经尝试使用http [“url”]指令,但lighttpd只是忽略这些请求,并继续传递完整的URL到辅助服务器,当然扼杀和抛出404s。 但是,如果我做全局重写,那么一切都被转发到辅助服务器,这也不是我想要的。 我如何去做这个任务?

nginx $ uri被url解码

我使用nginx作为反向代理,我有2个规则,如: location ~ ^/indirect { rewrite ^/indirect(.*) /foobar$1; } location ~ ^/foobar { set $url http://example.com/something/index.php?var1=hello&access=$scheme://$host$uri; proxy_pass $url; } 所以,正如你所看到的,我将$urivariables作为parameter passing给代理页面( $urivariables是一个nginxvariables,请参阅http core module文档)。 问题是,如果我访问http://example.com/foobar/hello%20world $urivariables包含/foobar/hello world (正如你看到的, %20已经被它的url解码值,一个空格)。 然后,nginx在执行proxy_pass行(后端没有联系)之前返回http状态码400(坏请求)。 还有可用的$request_urivariables,它保存了客户端发出的原始请求URI,所以在这种情况下,它将保存正确的值,并使用%20序列。 但我不能使用这个,因为如果客户端通过/indirectpath, $request_uri将包含/indirect/…而我希望accessparameter passing给后端总是/foobar/… 有多个indirect类规则(这是一个DAV / calDAV / cardDAV服务器,有多个客户端连接到多个path,所以我需要这些indirect类规则),所以这是不可行的那里有proxy_pass ,有些客户直接进入/foobarpath。 那么有没有办法得到$uri没有url解码呢? 可能的事情是不可接受的: 发送请求双重编码,因为请求可能来自我无法控制的客户端 在eacy间接规则中以及在“直接”规则中多次指定最终的url,因为这会导致维护问题。

URL重写条件可以比较两个服务器variables吗?

我想比较两个服务器variables作为URL重写条件的一部分。 但首先,一些背景… 在IIS中,如果您请求http://www.example.com/foo并且foo是一个目录,则IIS会将302“Object moved”redirect到http://www.example.com/foo/作为“礼貌redirect“( 来源 )。 如果使用IIS + ARR作为带有SSL卸载的反向代理,则后端IIS节点接收的请求通过http而不是https。 结合这两个行为,以及IIS的礼貌redirect丢弃SSL。 礼貌redirect使用与IIS收到的请求( 源 )相同的scheme,在这种情况下http而不是https。 我想创build一个出站重写规则,将传入的URL与传出的位置标题进行比较,并在此情况下将其从http重写为https: 响应是redirect: {RESPONSE_STATUS}是302 传入的请求是通过SSL: {HTTPS}是“开” 传入的URL不会以斜杠结尾。 传出的位置标题以斜杠结尾。 以上都是在前提下处理的。 棘手的部分是最后一点: 传出位置标题的path与附加斜线的传入url相同。 以下是我到目前为止的代码。 前提条件和头重写都工作正常。 但是,该条件导致500错误(URL重写模块错误),大概是因为我在模式中使用{REQUEST_URI} 。 我已经尝试将条件分成两个并使用捕获组,但是这也不起作用。 有任何想法吗? <rule name="Fix: Courtesy Redirect + SSL Offloading = SSL dropped" preCondition="Courtesy Redirect Drops SSL" enabled="true"> <match serverVariable="RESPONSE_LOCATION" pattern="^http://(.+/)$" /> <conditions> <add input="{RESPONSE_LOCATION}" pattern="{REQUEST_URI}/" /> </conditions> <action […]

用Nginx隐藏后端

我在主机B-beta上运行OpenNMS,并使用以下URL: http://b-beta:8980/opennms 我想用NginX来隐藏这个path可以从主机a-alpha这样访问: https://a-alpha/omber/nms 所以我想我需要的是重写请求发送到后端更改path从/ omber / nms到/ opennms – 但没有它是可见的用户 – 是可以做的事情? HTTPS已经正常工作。

在RewriteCond中使用RewriteMap查找。 可能?

我正在尝试以下 RewriteMap lookup "txt:D:/lookup.txt" RewriteCond %{REQUEST_URI} ^/${lookup} RewriteRule ^/(.*)/(.*)$ /a/$1/b/$2.html [PT,L] 我试图比较请求path是否与有效path开始或不。 我在查找文件中有很长的path列表。 请帮忙。

Apache的虚拟主机configurationwww与非www,重写或sServerAlias?

我们有一个中央的httpd.conf,我们包含各种虚拟主机的confs。 直到今天,我们并没有真正需要“www.subdomain.site.com”域名,只有“subdomain.site.com”。 现在我们做了,所以我想弄清楚这两种方法哪一个更好: [1]。 使用重写: RewriteCond %{HTTP_HOST} ^www.subdomain.site.com RewriteRule ^(.*)$ http://subdomain.site.com$1 [R=301] 要么 [2]。 使用ServerAlais: <VirtualHost 111.22.33.44:80> ServerName subdomain.site.com ServerAlias www.subdomain.site.com Include conf/subdomain.conf </VirtualHost> 我想在Rewrite上有更多的处理,但不确定ServerAlias在这个混合中的performance。 有一个比另一个更好的search引擎优化富? 任何和所有的想法欢迎! 谢谢, KM

NGINXredirect规则:子文件夹仅适用于HTTPS?

我试图将任何访问我的网站的pipe理部分的人redirect到它的HTTPS版本。 当前的重写规则如下: server { listen 80; server_name domain.com; location / { index index.php index.html; root /home/domain.com/public; } #Redirect Admin requests to secure server location /www/admin/ { rewrite ^/(.*) https://domain.com$1 permanent; } } 这个规则的问题是它只是转发http://domain.com/www/admin HTTPS – 去http://domain.com/www/admin/index.php ,例如,不redirect。 任何想法如何纠正这一点,以便任何以下/www/admin也被redirect?

在nginx中缺less尾部斜线

我使用这个configuration在Nginx上运行Magento: http : //www.magentocommerce.com/wiki/1_-_installation_and_configuration/configuring_nginx_for_magento 。 现在我想301所有的url都没有跟踪斜线到包含斜线的对方。 例如:/ contacts to / contacts /。 我试过几乎所有的nginx指令,我都能find,但无济于事。 例如,在nginx中指定的指令 – 使用拖尾斜杠重写URL会导致redirect到/index.php/。 我应该添加哪个指令?

如何检查是否启用了mod_alias?

我想尝试使用mod_alias而不是mod_rewrite来实现一些简单的redirect规则,但是在.htaccessinput的指令似乎不起作用。 有没有可能mod_alias没有加载或在服务器上启用? 我如何发现?