当用户请求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 方法的替换部分使用它。在这部分如何使用变量?
我想为 php-fpm 配置不同的速率限制。
我想要:
/ 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) 早上好。
因为我的客户想让旧服务器(运行 php-fusion)与新服务器(运行 Drupal)在相同的域名下运行,所以我有一个问题。这可能吗?最重要的是我将如何做到这一点?
旧服务器的 URL 结构类似于 projectname.domain.com,而新服务器的 URL 结构是 domain.com/projectname。
这可能吗?要在同一个域名上并排运行这两个服务器 - 但使用不同的 URL 结构?
谢谢马可
在我的网站上,如果浏览到http://example.com/images/整个目录的内容如下所示:

我怎样才能做到这一点才不会发生?
我可以.htaccess在该目录中创建文件吗?或者,还有更好的方法?我真的想阻止整个站点的目录列表(即该站点上的每个目录)。
我认为它要么必须在 Apache 中完成,要么使用全局.htaccess文件并将其放置在public_html文件夹中,也许?
编辑
我使用index.php文件转移了这个,但我仍然觉得这里的安全性是一个问题,我该如何永久解决这个问题?
我有一个 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) 仅当此目录中的文件不存在时,如何使 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) 我正在开发具有公共和私有部分的 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) 我有一个带有 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?
我最近在我的 Nginx 服务器上配置了 HTTPS,但是我认为在 URL ( http/ https) 中显示协议很难看。我很好奇是否有办法将协议隐藏在地址栏中,同时仍然保持 HTTPS 安全性。
目前我的 URL 看起来像:
https://example.com
但我希望它看起来像example.com.
非常感谢任何输入!
rewrite ×9
nginx ×4
.htaccess ×3
apache-2.2 ×2
apache-2.4 ×1
domain ×1
haproxy ×1
https ×1
rewritecond ×1