自从昨天以来,我一直试图设置一个301从非www到www域的redirect,但它只会导致我的网站出现问题。 我第一次尝试从网站的控制面板,然后通过修改.htaccess文件与以下内容: Options +FollowSymlinks RewriteEngine on rewritecond %{http_host} ^example.com [nc] rewriterule ^(.*)$ http://www.example.com/$1 [r=301,nc] 我的网站是基于WordPress的,第一个问题是我无法访问我的后端了…当我试图login页面只是重新加载自己,然后有一个无休止的循环,整个网站无法访问。 删除这几行后,一切都很好。
我在我的lighttpdconfiguration文件中有以下mod_rewrite指令: url.rewrite-once = ( "foo.*$" => "static/foo.pdf", ) 我想http://<server>/foo/r=ca2b912这样的URL: http://<server>/foo/r=ca2b912 (或类似),以便我可以跟踪http访问日志中链接的来源。 当我inputhttp://<server>/foo/r=131ab42时,会显示“save-as”文件对话框,并build议命名文件r=131ab42 (至less在使用firefox时)。 我想build议foo.pdf作为文件名保存。 这应该独立于访问该URL的工具(即wget,IE等应该都将该文件保存为foo.pdf )。 我怎样才能做到这一点? 我注意到,Firefox重新加载URL时更正了文件名。 请注意 :这是我第一次使用重写规则。 我试图自己find答案,但没有成功。
过去,我已经成功地将AngularJS应用程序部署到了S3,并启用了html5mode ,以允许无散列URL。 但是,对于我目前的项目,我需要把站点的Angular部分放到一个子目录( /app )中,并且有很大的麻烦。 我已经尝试了一些东西,最明显的是下面的东西,但是它导致了redirect循环,我不相信有反正规则匹配来避免这样的问题: <RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>app/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyPrefixWith>app/#</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> </RoutingRules> 我也尝试过把404引导到app /(也是/app/# /app/index.html# ),但是没有任何工作可以使我的应用程序以我的方式工作欲望。 一个例子,在我的angular应用程序中导致意外的错误: <RoutingRules> <RoutingRule> <Condition> <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals> </Condition> <Redirect> <HostName>mytest.s3-website-us-east-1.amazonaws.com</HostName> <ReplaceKeyWith>app/index.html</ReplaceKeyWith> </Redirect> </RoutingRule> </RoutingRules> 我可以使用哪些规则将所有以/app开头的请求定向到/app/# ?
我目前正在尝试为一堆下载镜像设置一个负载平衡器。 在阅读这个主题的时候,我看到Nginx非常适合作为负载平衡器,太棒了! 但是当看到不同的configuration时,我有点困惑。 人们可以决定redirect或代理到后端服务器。 redirect非常明确,您告诉客户端去其他地方,请求传递和处理,负载平衡器是不在图片。 但是,如果您select使用代理,是不是基本上削弱了运行多个下载镜像的整个想法? 鉴于nginx会将请求转发到后端服务器,下载文件并传递给客户端? 所以想象一下我认为它是如何工作的(数据包stream): redirect :客户端=>负载平衡器=>后端=>客户端 代理 :客户端=>负载平衡器=>后端=>负载平衡器=>客户端 或者,代理会做一些魔术,并告诉客户端实际连接到后端下载他的文件? 如果代理确实有点失败的目的,有多个下载镜像,以获得更多的吞吐量,redirect唯一的select? 编辑:或者我混淆了与重写代理的运作? 代理实际上是否像使用redirect一样传递请求,而仍然使用相同的URL?
Ubuntu 14.04 Apache 2.4.18 我已经使用letsencrypt设置了一个SSL证书。 它工作正常,但为了工作,我不能在一个虚拟主机configuration文件中定义多个虚拟主机。 每个虚拟主机必须在/ etc / apache2 / sites-available中的自己的.conf文件中。 我需要确保对www.example.com的所有请求都redirect到example.com。 由于我需要解决它在唯一的虚拟主机文件,我试图包括一个重写规则里面执行redirect,但到目前为止它失败默默地:所有的https://www.example.com请求没有被redirect到https ://example.com,并显示“不安全的网站”警告。 这是domain.com-le-ssl.conf的虚拟主机configuration文件。 <IfModule mod_ssl.c> <VirtualHost *:443> ServerName example.com ServerAlias www.example.com RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.+) [NC] RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301] DocumentRoot /home/user_account/www/example.com/public <Directory /home/user_account/www/example.com/public> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/user_account/www/example.com/public/$1 SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem Include […]
我有一个Nginxconfiguration,用于一个新的PHP应用程序,它具有与另一个传统PHP应用程序相同的function,但具有不同的URL。 我想保留旧应用程序的path,用/pagereplace/foopath前缀,并用/page/otherBarreplace特殊path/foo/bar : # legacy support location ~ ^/foo/bar { rewrite /foo/bar /page/otherBar$1 last; } # How to rewrite all other pages starting with "/foo" ? # END legacy support location / { # try to serve file directly, fallback to front controller try_files $uri /index.php$is_args$args; } location ~ ^/index\.php(/|$) { proxy_read_timeout 300; include fastcgi_params; […]
有没有办法取回重写条件的引用传递给所有后续的重写规则? 这是一个例子: RewriteEngine On RewriteCond %{HTTP_HOST} (bob).localhost [NC] RewriteRule ^/where/? /index.php\?user_name=%1 RewriteRule ^/who/? /index.php\?user_name=%1 在这个例子中,我期望这个行为: http://bob.localhost/where => http://bob.localhost/where/index.php?user_name=bob http://bob.localhost/who => http://bob.localhost/who/index.php?usern_ame=bob 但是对于第二条规则,我接收http://bob.localhost/who/index.php?user_name = 。 我已经尝试了几个不同的发行版使用Apache 2.2.17
我正在使用nginx重写一个url rewrite ^/old$ /new1 permanent; 我需要每隔几天将/ oldredirect到(/ new1)的地址。 我注意到,当我更改/ new1 url到/ new2并重新启动nginx,浏览器仍然redirect到/ new1直到我清除浏览器caching。 如何防止浏览器cachingredirecturl? PS我需要不断更改url的原因是,我在其中一个网站上设置了一个横幅,为了不打扰网站所有者一直使用新的url,我虽然给他一个地址使用并不断改变我的redirect。
请考虑我的根目录中的以下目录结构: /resources/css /resources/js /resources/templates /resources/images 我想从上面的目录服务静态内容,但我也想要这样的重写工作: rewrite ^/([az]+)(.*)$ /index.php?p1=$1&p2=$2; 例如myurl.com/register/…被重写为myurl.com/index.php?p1=register&p2=… 但是这个规则也会重写/resources/ ,那么如何从重写中排除/resources呢? 或者我需要另外重写? 没有任何我试过似乎很明显,我不理解的东西。
我很熟悉IIS和URL重写,但我刚刚得到了一个难倒我的任务。 我需要检查每个请求是否存在X-Forwarded-For HTTP头,并根据它的存在来redirect请求。 我怎样才能检查这个头?