标签: rewrite

如何在HAProxy中用子域重写url

当用户请求http://sub1.example.com/a/b/c 时,我需要将此请求的主机名标头替换为 example.com 并将路径重写为http://example.com/sub1/a/b/丙。我尝试使用 reqrep,但找不到如何将子域部分添加到路径中。

reqirep ^Host:\ (.*[^\.])(\.example\.com)      Host:\ example.com
reqrep ^([^\ :]*)\ (.*) \1\ /???/\2
Run Code Online (Sandbox Code Playgroud)

我找到了 %[req.hdr(host),lower,field(1,'.')] 方法来获取子域名,但我不能在 reqrep 方法的替换部分使用它。在这部分如何使用变量?

rewrite haproxy

1
推荐指数
1
解决办法
5198
查看次数

$request_uri 部分的 limit_req 不同

我想为 php-fpm 配置不同的速率限制。

我想要:

  1. 静态文件没有限制,
  2. PHP 请求有限制,
  3. PHP 请求/ admin /.+有不同的限制。

我对实现点 3 有问题。现在我测试:

limit_req_zone $binary_remote_addr zone=php:10m rate=2r/s;
limit_req_zone $binary_remote_addr zone=admin:10m rate=9r/s;

server {
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    limit_req_status 429;
# limitng works, server return 404
    location ~ /admin/ {limit_req zone=admin...}

    location ~ [^/]\.php(/|$) {
        limit_req zone=php burst=9 delay=4;
#limit_req not allowed here
        if($request_uri ~ /admin) {limit_req zone=admin...}
#not update limits (lower)
        location ~ ^/admin/ {limit_req zone=admin...}
#negative matching returns index.php content
        location location …
Run Code Online (Sandbox Code Playgroud)

rewrite nginx rate-limiting

1
推荐指数
1
解决办法
2126
查看次数

一个域名,两台服务器

早上好。

因为我的客户想让旧服务器(运行 php-fusion)与新服务器(运行 Drupal)在相同的域名下运行,所以我有一个问题。这可能吗?最重要的是我将如何做到这一点?

旧服务器的 URL 结构类似于 projectname.domain.com,而新服务器的 URL 结构是 domain.com/projectname。

这可能吗?要在同一个域名上并排运行这两个服务器 - 但使用不同的 URL 结构?

谢谢马可

rewrite domain apache-2.2

0
推荐指数
1
解决办法
471
查看次数

直接访问 URL 时隐藏目录内容不显示

在我的网站上,如果浏览到http://example.com/images/整个目录的内容如下所示:

需要防止这个显示

我怎样才能做到这一点才不会发生?

我可以.htaccess在该目录中创建文件吗?或者,还有更好的方法?我真的想阻止整个站点的目录列表(即该站点上的每个目录)。

我认为它要么必须在 Apache 中完成,要么使用全局.htaccess文件并将其放置在public_html文件夹中,也许?

编辑

我使用index.php文件转移了这个,但我仍然觉得这里的安全性是一个问题,我该如何永久解决这个问题?

rewrite .htaccess directory-listing apache-2.2

0
推荐指数
1
解决办法
8123
查看次数

nginx 重写所有帖子,但不重写 css 或 js

我有一个 WordPress 博客,我想将所有请求重定向到某个帖子/页面,不包括 js、css(和图像)。

所以 example.com/some-post/ 必须(暂时)重定向到 exmaple.com/catch-all/

我正在玩这个,但似乎不太好用(我不确定我是否需要使用 $uri):

if ($uri !~ \.css$) {
        set $redi C;
}

if ($uri !~ \.js$) {
        set $redi "($redi)J";
}

if ($uri !~ /catch-all/$) {
        set $redi "($redi)P";
}

if ($redi = CJP) {
        rewrite ^(.*)$ https://example.com/catch-all/ last;
        return 302;
}
Run Code Online (Sandbox Code Playgroud)

rewrite nginx

0
推荐指数
1
解决办法
5800
查看次数

仅当 .htaccess 中的图像不存在时才重写

仅当此目录中的文件不存在时,如何使 RewriteCond+RewriteRule 将 site1.com/folder1 更改为 site2.com/folder1。例如:site1.com/wp-content/uploads/2014/03/image.jpg

如果图像 site1.com/wp-content/uploads/2014/03/image.jpg 不存在,则获取 site2.com/wp-content/uploads/2014/03/image.jpg 但如果图像存在,则不要什么都不做。

更新,这里是我需要的代码,感谢大家的帮助)

Options +FollowSymLinks
RewriteEngine ON
RewriteCond %{REQUEST_URI} "/uploads/"
RewriteCond %{REQUEST_FILENAME} .*\.(jpeg|jpg|gif|png)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+) http://site2.com/$1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)

rewrite .htaccess rewritecond

0
推荐指数
1
解决办法
6330
查看次数

如何访问由表达式中的重写规则设置的环境变量?

我正在开发具有公共和私有部分的 Symfony 3.4 应用程序。但是,我目前正在为此应用程序设置一个只能由授权用户访问的临时系统,因此我在整个应用程序前面放置了一个 .htaccess 基本身份验证。

应用程序中有一条路由需要由不提供身份验证的外部应用程序访问。我只想为这条单一路由禁用 .htaccess 身份验证。此路由的所有 URL 都采用/api/post-result/123where123是任意 ID的形式。

在四处搜索之后,我试图通过Require expr我的 .htaccess 中的一个条目来解决这个问题,该条目将简单地匹配 URL。但是,由于 Symfony 进行 URL 重写,REQUEST_URI在服务器(以及我的情况)中始终显示为“app.php”。我尝试了其他变量,例如QUERY_STRINGor PATH_INFO,但它们似乎都没有包含我的实际请求 URI。然后我尝试使用重写规则将匹配的 URI 放入环境变量中。但是,这似乎无法通过表达式读取。

这是我的 .htaccess 文件

DirectoryIndex app.php

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

    RewriteRule ^(.*)$ %{ENV:BASE}/app.php [L,E=SFURI:$1] # <-- env variable is set here
</IfModule>

<IfModule !mod_rewrite.c> …
Run Code Online (Sandbox Code Playgroud)

rewrite .htaccess http-basic-authentication apache-2.4

0
推荐指数
1
解决办法
4303
查看次数

nginx - 将对不存在的文件的所有请求重定向到索引页面?

我有一个带有 1 个 html 文件的简单网站index.html。我希望该类型的所有用户都example.com/abcde将被重定向到example.com 当然,所有指向资源文件(图像/css/js 等)的链接都应该工作

目前,我有这个:

location / {
    try_files $uri /index.html;
}
Run Code Online (Sandbox Code Playgroud)

此设置有效,如果用户尝试打开example.com/abcde. 但是浏览器中的URL并没有改变... 如何重写URL?

rewrite nginx

-1
推荐指数
1
解决办法
2164
查看次数

使用 Nginx 在 URL 中隐藏协议?

我最近在我的 Nginx 服务器上配置了 HTTPS,但是我认为在 URL ( http/ https) 中显示协议很难看。我很好奇是否有办法将协议隐藏在地址栏中,同时仍然保持 HTTPS 安全性。

目前我的 URL 看起来像: https://example.com 但我希望它看起来像example.com.

非常感谢任何输入!

rewrite nginx https

-6
推荐指数
1
解决办法
190
查看次数