每次我重新启动服务器时,我的 URL 重写规则似乎都会重置。每次都重新创建它们显然非常令人沮丧!
我正在运行 Windows Server 2008 R2(完全更新)、IIS 7.5 和 IIS URL Rewrite 2.0。
有谁知道是什么导致了这种情况?先感谢您。
我最近用 php fpm、php apc 和 postgres 安装了 nginx 1.0.5。我只想玩弄 nginx 并学习如何配置基本的东西。对于扩展测试,我决定安装 PHPBB3(运行良好)以查看 PHP + Postgres 访问是否有效。
现在我想了解重写 URL 的工作原理,并且已经发现重写的内容应该写在 nginx 配置的位置部分中。
但不幸的是,nginx 似乎忽略了我在配置中放置的每个重写规则。所以我想知道我是否必须先以某种方式打开重写功能?
nginx -V |grep rewrite什么也没显示,此外安装 nginx-extras 也没有帮助。我只是希望 nginx-extras 包含类似重写模块的东西,但不幸的是事实并非如此。
搜索 serverfault.com 和 google 没有帮助。那么——我该怎么办?:\ 任何帮助表示高度赞赏。
PS:所有软件包都是在 Debian 6 中使用 apt-get install 安装的。
编辑:下面是我的 nginx vhost 配置的摘录:
server {
listen 80;
server_name domain.org www.domain.org;
access_log /var/log/nginx/domain.access_log;
error_log /var/log/nginx/domain.error_log;
rewrite_log on;
events {
debug_connection <my ip>;
}
[...]
Run Code Online (Sandbox Code Playgroud) 我们的主 Web 服务器正在使用 IIS 6,它显然会捕获所有端口 80 流量,并且我们在使用 Apache 托管的非标准端口 (8443) 上提供了另一个应用程序。
例如:
我希望能够在不使用端口 8443 的情况下访问 Apache 应用程序。也就是说,IIS 应该在不同端口上重写/代理来自 Apache 应用程序的内容。注意:我不想重定向用户。
这可能吗?我应该使用哪些工具?
我知道这一定已经得到了回答,但是我已经搜索了很长时间,找不到答案。我猜只是没有找对地方,也许有人可以帮助我。
基本上我在非标准端口上通过 SSL 运行 phpmyadmin,在本例中为 12345。
现在我已经https://example.com:12345设置好了,一切正常。现在我想添加仅键入http://example.com:12345并重定向到 https:// 的功能。
我假设以下内容会起作用,但事实并非如此。
server {
listen 12345;
server_name php.myadmin.com;
if ( $scheme = http ) {
rewrite ^ https://php.myadmin.com:12345$request_uri? redirect;
}
root /var/www/php;
ssl on;
[....]
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个400 bad request.
现在,在发布答案之前,请确保仔细查看重定向表单。检查下面链接中的陷阱。
https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#taxing-rewrites
此外,如果这甚至可以在没有 if 语句的情况下完成,那就太好了:
https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#using-if
在运行 varnish 的 apache 2.2 服务器上,我试图将 http -> 重定向到整个 Drupal Commons ( http://commons.acquia.com/ ) 站点的https 。
由于 varnish 缓存了一些重定向(我认为是 R=301,但不是 R=302),我首先让重定向在 :8080 工作,而 varnish 不提供该重定向。
下面的 .htaccess 代码成功地将 http://foo.example.com:8080 重定向到 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 %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} …Run Code Online (Sandbox Code Playgroud) 在使用 IIS 管理器时,是否可以将在网站级别配置的重写规则保存到 applicationHost.config 中?(我知道如何手动执行此操作)
默认情况下,它们会保存到 Web.config 文件中。
我需要它来通过 MSDeploy 工具将规则部署到其他服务器。
我在主机 B-beta 上运行 OpenNMS,其 URL 如下:
http://b-beta:8980/opennms
Run Code Online (Sandbox Code Playgroud)
我想使用 NginX 来隐藏可从主机 a-alpha 访问的路径,如下所示:
https://a-alpha/omber/nms
Run Code Online (Sandbox Code Playgroud)
所以我想我需要的是重写发送到后端的请求以将路径从 /omber/nms 更改为 /opennms - 但它对用户不可见 - 这是可以完成的事情吗?
HTTPS 已经可以正常工作了。
我有一个运行多个站点的 IIS7 Web 服务器。一些站点是一个域的子域,而其他站点则是完全独立的域。我想使用 IIS 重写将一个域的所有子域站点重定向到 https,但我希望其他域保持原样。例如,我在同一 Web 服务器上有以下站点:
one.test.com, two.test.com, otherdomain.com
我想设置一个全局 IIS 重写以将http://one.test.com和http://two.test.com重定向到 https,但 otherdomain.com 不应该受到影响。
这是我到目前为止所拥有的,当我测试正则表达式时,它似乎是正确的,但它没有重定向子域站点:
<rewrite>
<globalRules>
<rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
<match url="(.*)(\.test\.com)" />
<conditions logicalGrouping="MatchAny">
</conditions>
<action type="Redirect" url="https://{R1}{R2}" redirectType="SeeOther" />
</rule>
</globalRules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)
我是否过于复杂化或遗漏了一些明显的东西?
干杯。
我有两个域 www.domain.com 和 www.domain.com.tw。我希望用户被重定向到最近的服务器,但如果他们想查看其他服务器,他们可以通过单击站点中的链接。
我试图用 cookie 来做,但它似乎不起作用。我认为问题在于 cookie 是为引用 URL 而不是重定向 URL 设置的,因此 nginx 甚至看不到 cookie。我怎样才能做到这一点?这是我到目前为止的尝试。
server {
listen 80;
server_name www.domain.com.tw;
set $redir "";
if ($http_accept_language ~* "en") {
set $redir "1";
}
if ($http_cookie ~* "noredir") {
set $redir "";
}
if ($redir = "1") {
rewrite ^ https://www.domain.com/;
}
}
Run Code Online (Sandbox Code Playgroud) 我的 IIS7.5 站点有很好的重写模块。
现在,我希望添加一些 URL,它们都进入 HTTP 410-Gone 状态。
例如。
<rule name="Old Site = image1" patternSyntax="ExactMatch" stopProcessing="true">
<match url="image/loading_large.gif"/>
<match url="image/aaa.gif"/>
<match url="image/bbb.gif"/>
<match url="image/ccc.gif"/>
<action type="CustomResponse" statusCode="410"
statusReason="Gone"
statusDescription="The requested resource is no longer available" />
</rule>
Run Code Online (Sandbox Code Playgroud)
但这是无效的 - 网站没有开始说有重写配置错误。
还有另一种方法可以做到这一点吗?我并不特别想为每个URL定义一个 URL 和 ACTION 。