我有两个运行Apache的CentOS盒子。 一个是我的开发环境,另一个是我的生产环境。 我在使用Gulp的过程中,从我的开发服务器通过Git推送到我的生产服务器,但在基于环境的.htaccess文件中有不同的configuration要求。 我想要做的是有一些types的中央configuration文件,允许我更新这些configuration,然后当我推动dev时,它将.htaccess文件的某些方面设置为开发设置,当推到生产时,它使用我的生产设置。 (我想另一个select是有一个dev.htaccess和prod.htaccess,并有Gulp只是重命名相应的文件.htaccess根据它推动到的环境。我想避免必须维护多个.htaccess文件虽然。)
我们在configuration了deny的文件夹中有一个.htaccess文件,如下所示: Order deny,allow Deny from all Allow from <whitelist IP> Allow from <whitelist IP> …. 在这个文件中没有其他重写等规则,只是拒绝/允许的东西。 如果您尝试从拒绝的IP地址访问http://www.xyz.site/protected/ (无文件名),则会按预期得到“禁止”错误。 但是,如果你去http://www.xyz.site/protected/filename.php – 其中filename.php文件夹内的有效文件,例如login表单,页面加载 – 但没有图像或CSS (据推测每个.htaccess仍然被拒绝) 为什么不这个.htaccess安装程序阻止从被拒绝的IP访问整个文件夹 – 可能有冲突的服务器权限覆盖它的某处?
我看到相同的.htaccess代码片段用两种不同的方式编写,如下所示: <Files .htaccess> order allow,deny deny from all </Files> 和 <Files .htaccess> Order Allow,Deny Deny from all </Files> 我正确地认为这两个版本是同样有效的? 所有.htaccess命令是否区分大小写?
很长一段时间,我没有在我的linux服务器上使用https,因为我没有find适合我需求的体面的CA. 现在,让我们encryption(一个提供免费证书的新的CA)已经推出了他们的公开testing版,所以我马上得到了他们的证书。 我现在将所有的请求redirect到https,一切工作正常,但由于我已经使用HTTP的年龄,我将需要一些时间来重写一些客户端软件取决于wbesite是http。 不幸的是,我现在无法部署更新,因为更新机制现在也被破坏:/ 所以我的问题是:有没有办法在apache2中禁用单个文件的https? 我更喜欢使用一个简单的.htaccess文件的解决scheme,但也有人赞赏。 这是通过letsencrypt添加到VirtualHost *:80 : RewriteEngine on RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,QSA,R=permanent]
背景 我设法通过在我的.htaccess文件中包含这个代码片段来让httpredirect工作在我的Wordpress安装中: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule> 我在Google Cloud环境中运行,问题是运行状况检查要求“健康检查资源”返回200 OK 。 运行状况检查会发出一个不包含X-Forwarded-Proto头部信息的HTTP请求,所以Apache将以301做出响应,因此运行状况检查失败(不遵循redirect)。 不幸的是,在Google Health Checker中定义头文件是不可能的,所以我不能将X-Forwarded-Proto头文件伪装成“https”。 所以我希望有一个解决方法是在运行状况检查path中提供查询参数,并将.htaccess文件configuration为只有在指定的查询参数未定义(或等于false或类似)时才redirect。 题 如果X-Forwarded-Proto头部不等于https (如上例所示)并且查询string不包含参数healthCheck=true那么如何修改RewriteCond (我假设)只执行redirect?
我想写一个规则,我不知道确切的http_host。 例如,我有(www.)?example.com 。 现在我需要构build以下example : (www.)?example.com/example/…在一个RewriteRule中。 那么我怎样才能把http_host分成名字呢?
我有nginx代理到Apache作为后端为了nginx处理静态资产。 不幸的是,当我试图访问一个“漂亮的url”,它只是显示索引页面。 nginxconfiguration server { listen 80; root /var/www/example.com; index index.php index.html index.htm; server_name example.com www.example.com a.example.com b.example.com c.example.com; location / { try_files $uri $uri/ /index.php; } location ~ \.php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; } location ~ /\.ht { deny all; } } Apache vhostconfiguration <VirtualHost 127.0.0.1:8080> […]
我试图实现一个简单的重写,但看起来像我做错了什么。 我想要做的是,我有一个urlblog.example.com/articles/这给了我404,和其他url是blog.example.com/articles/abc,blog.example.com/articles/xyz等,这工作得很好,所以我想blog.example.com/articles/向我展示的主页是blog.example.com而不是404,但我不想要任何其他的url,其中有像/ articles / *受该规则的影响。 这是我迄今为止所尝试过的 RewriteRule ^/articles$ /index.php [R=302] 这不起作用 我也尝试了redirect Redirect "/articles" "http://blog.example.com/" 我工作,但它会更改浏览器中的url,也会影响以/ articles开头的所有其他url 任何帮助表示赞赏
我有一个Apache2服务器上运行的PHP应用程序。 我开始使用HTML5 Boilerplate,而.htaccess包含所有图像的“1个月”过期策略。 例如: ExpiresByType image/jpeg "access plus 1 month" 我的应用程序还允许用户用新的(在相同的名称和path下)replace现有的图像。 但是,一旦被replace,用户将继续看到旧的图像,直到页面被强制刷新(比如Ctrl – F5 )。 我从日志中注意到,从技术上讲,由于映像设置为从现在起1个月后过期,所以浏览器不会向服务器请求。 只有在浏览器强制刷新的时候,Apache2才会发出一个304 (如果文件没有改变),或者发送一个新的图像(如果改变的话)。 我想要的是一个简单的直接机制: 保持图像从现在起1个月到期的现有设置。 如果浏览器已经拥有它,则不需要获取它。 但是,如果图像被用户更新,则自动让浏览器获取新图像。 应该没有必要告诉用户强制刷新。 最后一点之后,新图像的获取还必须扩展到其他用户或其他浏览器。 作为替代,我不介意是否可以有条件地将过期策略设置为“立即”用于特定path(其他文件夹中的图像必须遵循一般过期策略)。 我可以和众多的304一起生活。 我猜。 我不想简单地改变一个新的文件名。 文件名是dynamic生成的,有几个 – 跟踪他们的“新名字”会增加复杂性。 (虽然如果没有其他简单的解决scheme,我将不得不探讨这一点。)
我有一个使用基于PHP的CMS系统的网站。 所以每个页面都是dynamic生成的,就像这样: http://www.shuling.net.cn/index.php?_m=mod_product&_a=view&p_id=87 现在我想redirect这个特定的页面到另一个页面,即: https://www.datanumen.com/sql-recovery/ 所以我写的.htaccess文件如下: redirect 301 /index.php?_m=mod_product&_a=view&p_id=87 https://www.datanumen.com/sql-recovery/ 但是,当我将.htaccess上传到网站的根目录后,这根本不起作用。 我通过编写另一条规则来重新testing,如下所示: redirect 301 /sql/ https://www.datanumen.com/sql-recovery/ 那么这个规则将完美的工作。 为什么? 谢谢