Articles of 重写

Apacheredirectwww到非www

我正在使用2台服务器。 一个是正​​在使用的服务器,另一个是testing服务器,两者完全相同,关于操作系统,Apache版本和Apacheconfiguration。 OS是Ubuntu 16.04,Apache版本是2.4.29。 这些服务器通过vhost文件使用redirect。 非www到wwwredirect在两个服务器上都能很好地工作。 代码 : RewriteEngine on RewriteCond %{REQUEST_URI} ^/\.well-known/acme-challenge/ RewriteRule ^ – [END] RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^(.*)$ http://www.example.com$1 [R=301,NE,L] 但是, 当使用www进行非wwwredirect时,它在testing服务器上运行良好,但在使用服务器上不起作用。 使用服务器得到一个403禁止的错误。 详情如下。 “您无权访问/在此服务器上。” 代码 : RewriteEngine on RewriteCond %{REQUEST_URI} ^/\.well-known/acme-challenge/ RewriteRule ^ – [END] RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule ^(.*)$ http://example.com$1 [R=301,NE,L] 而且, 即使在vhost文件中没有ServerAlias,正在使用的服务器也不会被redirect,并且testing服务器被很好的redirect。 这是我正在使用的虚拟主机文件。 另外,我正在使用ISPconfig控制面板。 <Directory /var/www/example.com> […]

如果包含参数,Nginx会redirecturl

这是我得到的情况。 我有一个使用了很多React的网站。 有几个HTML页面和内容被加载到HTML页面取决于所请求的URL(这几乎是一个单一的页面应用程序)。 为了更好的search引擎优化,我为每个这样的URL创build了替代的HTML页面(我知道谷歌机器人可以阅读像React这样的JavaScript页面,但其他search引擎不能)。 当search引擎机器人访问一个React页面时,它会看到这个标签<meta name="fragment" content="!" /> <meta name="fragment" content="!" /> ,然后将这个空参数_escaped_fragment_附加到请求的URL。 在看到附加参数后,nginx返回React页面的替代(prerendered)html页面。 例如,如果请求的URL是/some/nice/url那么机器人如果看到标签<meta name="fragment" content="!" /> <meta name="fragment" content="!" />它会将空参数附加到/some/nice/url?_escaped_fragment_=并被redirect到这个URL /some/nice/url?_escaped_fragment_=的替代html页面/some/nice/url?_escaped_fragment_= 。 如果没有添加空参数,则必须返回React页面(而不是替代html页面)。 所有的prerendered html文件都在文件系统上,并且与URL具有相同的名称,但是最后使用下划线+ .html而不是斜杠。 例如,如果URL是/some/nice/url则文件名称为some_nice_url.html 。 这是在URL的后面添加空参数/some/nice/url?_escaped_fragment_=时必须呈现的html文件。 我怎样才能写一个通用的规则来处理这个问题的nginx? generics我的意思是通用处理所有的URL。 它应该看起来像这样: location "/some/nice/url" { # this should be some regex index some_nice_url.html; alias /path/to/templates/; # /path/to/templates is where prerendered html fires are […]

Nginx重写数字范围

我有一个安装程序,其中有数千个图像存储在以数字范围(1-10000,10001-20000,20001-30001等)命名的目录中。 所以例如我的url是https://www.example.com/images/123456/example-image-01.jpg 但我的实际文件位于/var/www/contents/120001-130000/123456/123456.jpg 完全匹配我的位置块将是: location = /images/123456/example-image-01.jpg { rewrite ^/images/(.*)/(.*)$ /var/www/contents/120001-130000/$1/$1.jpg break; } 但有没有办法做到这一点与location ~*正则expression式匹配,让Nginx的图像名称不带URL后缀( 123456 ),并将其转换到相应的范围( 120001-130000 )?

你用什么来支持与SharePoint不对称的path

我的客户希望我提供一个解决scheme,允许与SharePoint不对称的path。 我知道这不是从微软正式支持,但它似乎是一个合理的要求。 我试图缩短我的国家/地区的urlpath。 这是用于search引擎优化的常用技术。

基于MIMEtypes的Apache重写

我的Apacheconfiguration中有一个虚拟主机来处理广告,垃圾邮件和恶意软件网站。 它通过将不良服务器redirect到通过HOSTS文件映射到虚拟主机的特定环回地址来工作。 使用下面的指令,我已经能够使用类似[ad]的东西来replace坏服务器中的任何页面,并且使用本地1×1透明的PNG文件replace坏服务器中的任何图片。 RewriteRule \.(gif|jpg|png|jpeg)$ /1×1-trans.png ErrorDocument 404 "<p>[ad]</p>" 然而最近,我看到了页面的IMG标签被破坏,因为它们使用了一个没有文件扩展名的SRC。 <img src="http://badserver.com/adsandjunk/foobar;tile=4;sz=575×90;othervariables=stuff?"> 我试过使用 RewriteRule ^.*$ "<p>ad</p>" [L] 但是,这又给了破碎的图像占位符。 使用这个 RewriteRule ^.*$ /1×1-trans.png [L] 修复图像,但是然后任何非图像(如页面,框架等)popup“另存为”对话框的PNG。 我怎样才能让Apache用graphics和其他所有的HTML代替graphics(即任何IMG标签)? 非常感谢。

删除尾部斜杠Lighttpd URL

一个奇怪的要求,但我真的需要这个答案。 你们可以帮我使用重写规则,从Lighttpd.conf中的URL删除尾部的斜杠? 例如: **A** www.example.com/page/ **B** www.example.com/page 我想要urlA被强制进入urlB的语义 非常感谢你。

Helicon ISAPI Rewrite正在处理httpd.conf的重写规则而不是.htaccess

我们在我们的Windows 2003 Web服务器上安装了Helicon ISAPI Rewrite 3。 RewriteRules在位于httpd.conf文件中的全局文件中工作正常。 服务器提供多个网站,我们希望创buildRewriteRules来应用于特定的网站。 在每个Web站点的“IIS属性”中,ISAPI_Rewrite都存在一个单独的选项卡,指向该Web站点的.htaccess文件。 没有规则适用于.htaccess文件工作。 任何想法为什么.htaac​​cess文件没有效果。

如何:Zend .htaccess Lighttpd转换

我们使用的是Zend Framework,我们从apache切换到lighttpd,对于zend主要的htaccess文件是这样的: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule !\.(js|ico|gif|jpg|png|css)$ /index.php 什么是lighttpd相当于这个? 我在这里find一条线, url.rewrite-once = (".*\.(js|ico|gif|jpg|png|css)$" => "$0", "" => "/index.php") 但它不是原来的两行( 如果文件和目录存在,则不要 行) 谢谢,

在Dreamhost上重写URL

我正在尝试为Dreamhost服务的网站重写一个url。 所以基本上我想要做到以下几点: 只重写以x开头的url! 应该将这样的http:// domain.com/x23这样的url重新写入http:// domain.com/index.php/lookup/code/x23 当然不显示重写的URL! 我试过这个: RewriteEngine On RewriteRule ^(x[0-9a-z])$ index.php/lookup/code/$0 [L] 但似乎并不奏效。 谢谢,马克斯

Nginx重写干净url的规则

我想写干净的URL的nginx重写规则。 每次用户点击; http://domain.com/abc/12/16/abc-def-ghi 我需要执行 domain.com/abc.php?a=12&b=16&c=abc-def-ghi 现在我的正则expression式是正确的: ^\/abc\/(\d+)\/(\d+)\/(\w+\S+)$ http://rubular.com/regexes/11063 和规则是 if (!-e $request_filename) { rewrite ^\/abc\/(\d+)\/(\d+)\/(\w+\S+)$ abc.php?a=$1&b=$2&c=$3 last; } 但它是给“没有input文件指定”。 我找不到问题是什么?