Articles of 重写

Apache重写redirect到https和www

我需要得到mod_rewrite来做到以下几点 http://abc.com -> https://www.abc.com https://abc.com/login -> https://www.abc.com/login http://www.abc.com?x=3 -> https://www.abc.com?x=3 https://abc.com/login?x=1 -> https://www.abc.com/login?x=1 http://www.abc.com/login?x=3 -> https://www.abc.com/login 我有以下,在我的abc.com.conf虚拟主机文件,但它不能正常工作 <VirtualHost *:80> ServerName abc.com ServerAlias www.abc.com RewriteCond %{HTTP_HOST} ^abc\.com RewriteRule ^(.*)$ https://www.abc.com/$1 [R=permanent,L] RewriteCond %{HTTPS} off RewriteRule (.*) https://www.abc.com/%{REQUEST_URI} </VirtualHost> <VirtualHost *:443> ServerName abc.com ServerAlias www.abc.com RewriteCond %{HTTP_HOST} ^abc\.com RewriteRule ^(.*)$ https://www.abc.com/$1 [R=permanent,L] </VirtualHost> 其他人可以帮我吗? [编辑澄清]

htaccess重写?

我有一个脚本上传图像,为它创build一个散列,创build3个目录,并将图像存储到 imgs/f3s/v5g/234/536_f3sv5g2344270fd093ee8a9bf8de3de32dad.jpg (“536_”是用户名) 所以即时尝试转身 imgs/f3s/v5g/234/536_f3sv5g2344270fd093ee8a9bf8de3de32dad.jpg 成 user_pics/536/536_f3sv5g2344270fd093ee8a9bf8de3de32dad.jpg 我怎样才能做到这一点? 我想如果有人想要查看照片,他们看到在url中的新目录,而不是有3个子目录。 编辑 所以jon的方法工作,但是我需要添加RewriteRule .* index.php/$1 [PT,L]到我的htaccess。 当我补充说,一切都停止工作怎么来? 这是我目前为止所拥有的 RewriteEngine On RewriteCond%{REQUEST_FILENAME}!-f RewriteCond%{REQUEST_FILENAME}!-d RewriteRule。* index.php / $ 1 [PT,L] RewriteRule ^ user_pics /([^ /] +)/ [^ ] + (。{3})(。{3})(。{3})(。*)。(jpe?g | gif | png) imgs / $ 2 / $ 3 / $ 4 / $ 1_ $ 2 […]

在Nginx中用重写规则redirect循环

我有一个简单的Nginx的静态网站,我试图实现从mysite.com/index.html到mysite.com的redirect,所以它更适合search引擎。 但是我得到一个redirect循环。 我写了这个规则: location = /index.html { rewrite ^ http://mysite.com permanent; } 做一些testing,我注意到,如果我redirect到404页面,一切都很好: rewrite ^ http://mysite.com/404.html permanent; 这是完整的configuration文件: server { listen 80; server_name www.mysite.com; rewrite ^/(.*) http://mysite.com/$1 permanent; } server { listen 80;# default_server; listen ipaddress:80; server_name mysite.com; access_log /var/www/mysite.com/logs/access.log; error_log /var/www/mysite.com/logs/error.log; root /var/www/mysite.com/htdocs; error_page 404 /404.html; location = /index.html { rewrite ^ http://mysite.com permanent; […]

Apache – 如何redirect/〜用户名到不同的URL

我想使用Apache Rewrite将ipaddress /〜username / filenameredirect到http://newurl.domain.com/filename 。 任何人都可以指出如何做到这一点,特别是一次只能为一个用户做到这一点? 先谢谢你。

Nginx不区分大小写的反向代理重写

我正在寻找设置一个nginx反向代理,使一些即将到来的服务器移动和负载均衡的实现更容易在我们的应用程序。 由于我们的服务器都是IIS大小写敏感性不是问题,但现在与nginx它成为我的一个。 无论如何,我只是想重写一遍。 基础设施说明 所有的后端服务器都是IIS 大多数服务都是WCF服务 我正在尝试简化这些URL,以便在我们继续构build时移动服务 由于以下错误,我无法将我的位置设置为不区分大小写: nginx:[emerg]“proxy_pass”不能在正则expression式给出的位置,或指定位置内,或者if语句内,或者在/etc/nginx/sites-enabled/test.conf中的“limit_except” :101 我正在尝试处理重写的conf文件的主要部分如下所示 location /svc_test { proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_set_header host $http_host; proxy_pass http://backend/serviceSite/WFCService.svc; } location ~* /test { rewrite ^/(.*)/$ /svc_test/$1 last; } 这是我无法弄清楚的testing位置。 如果我打电话给http://nginxserver/svc_test/help我得到WCF帮助页面正确显示,我可以做所有可用的REST调用。 这是我的一个头脑的正则expression式的问题,但我已经尝试了几个变化,所有我可以得到从Nginx的404或500错误。 这不是火箭科学,所以有人可以指引我正确的方向,所以我可以看起来像一个白痴,只是继续前进?

nginx – select性重写一个位置块

假设一个位置块需要处理类似的URL / test_api / group_1 / version(几个URL属于这个组,例如,/ test_api / aaa / version,/ test_api / bbb / version) / test_api / group_2 / revision(其他几个URL属于这个组,例如,/ test_api / yyy / revision,/ test_api / zzz / revision) 如何在将“/ test_api / group_2 / revision”传递给位置块中的默认服务器时select性地重写“/ test_api / group_1 / version”? 如果这是不可能的,还有其他的方法来实现相同的目标。 以下是我目前的不歧视位置块。 location /test_api { types { application/json json; } root […]

Nginx的 – redirect所有url的根(不显示url中的HTML页面?)

我需要把我以前的网站运行wordpress到一个单一的网站。 我的网站只能包含一个login页面,我希望所有的旧url都redirect到我的网站的根目录。 我有这个工作,但不完全如何我更喜欢。 目前,一切都redirect到mysite.com/index.html,但我希望它直接指向mysite.com。 以下是我在我的位置/ {}标签中使用的redirect代码: try_files $uri $uri/ /index.php?q=$uri&$args; if ( $uri !~ ^/(index\.php|css|images|uploads|js|robots\.txt|favicon\.ico|wp-admin|launch|wp-login\.php|inc) ) { rewrite ^ http://www.mysite.com/index.html permanent; } 这段代码redirect除了那些特定的目录和我列出的文件之外的所有内容。 这样,我仍然可以访问我的wp-admin目录,以便将内容添加到Wordpress中,所以当我稍后拔出交换机时,我可以重新切换站点,并更新所有内容并准备启动。 如果我从上面的redirect中删除index.html,我的网站进入redirect循环。 如果我把重写规则指向/,那么我的网站也会进入redirect循环。 有人可以帮助我更新该代码,以便index.html不显示int浏览器窗口作为实际的URL? 我真的很喜欢实际的url是www.mysite.com,而不是www.mysite.com/index.html。 编辑: 我真正需要的是在我的!〜语句中指定根目录。 但是,如果我添加| / | 它允许所有的文件和子目录被忽略…这意味着我的redirect规则永远不会被调用。 我可以只指定一个根目录,而不包括该根目录中的任何文件或子目录? 这样我可以告诉nginx不要redirect到我的域,但是如果它find/index.html,它将redirect到/。

nginx的try_filesredirect尾部的斜杠和403禁止

我试图创build一个组合“超级caching” – >文件 – >模块模式与try_files(“超级caching”从wordpress超级caching采取,因为它是一个类似的方法)。 适用于caching的文件位于“caching”文件夹内。 如果文件存在于其中一个位置,则应该提供该文件。 / $caching$ URI / $caching$ URI / $ URI $ URI / 1.cache – > 2.file – > 3.pattern location / { try_files /$cache_dir$uri /$cache_dir$uri/ $uri $uri/ /index.php; } 地址为“domain.com/css/style588.css”的示例 寻找/srv/www/domain.com/public_html/cache /css/style588.css 寻找/srv/www/domain.com/public_html/cache /css/style588.css /index.html&.php 寻找/srv/www/domain.com/public_html /css/style588.css 寻找/srv/www/domain.com/public_html /css/style588.css /index.html&.php 如果没有find:/srv/www/domain.com/public_html /index.php 我试图使它与下面的configuration工作。 我究竟做错了什么? 包括来自nginx.conf的domain.conf server { ## […]

在IIS中使用不同身份validation的不同池之间的URL重写

我有一个IIS应用程序和三个子应用程序,如下所示: CMT (Windows and Anonymously authenticated) – CI – EM – Website (Windows authenticated) CI和EM是帮手Web服务,网站 – 显然是网站。 现在,如果应用程序托pipe在cmt.mycompany.com下,则用户可以访问该网站,如下所示: cmt.mycompany.com/website/mypage 我想写一个URL Rewrite规则,这样我们的用户就不用在DNS之后写'网站',只需打开cmt.mycompany.com或者cmt.mycompany.com/mypage打开主页或者mypage,分别。 <rule name="WebsiteMapping" stopProcessing="true"> <match url="^(?!\b(?:ci|em|website)\b).*$" /> <action type="Rewrite" url="http://{HTTP_HOST}/website/{R:0}" logRewrittenUrl="true" /> </rule> 这条规则所做的只是简单地重写任何不以ci , em或website开头的url,以便在DNS之后添加website 。 我有两个问题,我似乎无法解决: 出于某种原因,URL重写似乎无法与身份validation,所以无论何时我打cmt.mycompany.com ,我得到一个对话框要求我authentication自己,即使我input我的凭据它不起作用。 由于主应用程序(CMT)和网站托pipe在不同的应用程序池中,因此我们需要安装IIS ARR,但这并没有帮助。 我试图改变规则“redirect”,它确实工作,但还有一个问题。 所以我有一个负载平衡器连接到4个独立的盒子。 负载均衡器托pipe在端口80下,但各个盒子托pipe在端口9991.当我点击各个盒子时,URLredirect工作成功,但是当我点击负载平衡器dns时,端口9991(单个盒子)被追加到负载均衡器的DNS! 例如,如果我点击了cmt.mycompany.com/mypage ,我会被redirect到cmt.mycompany.com:9991/website/mypage ,这显然是无效的,因为负载平衡器托pipe在端口号80而不是9991。 任何想法来帮助我解决这些问题? 谢谢!

Apache将http请求重写为https

我有一个Apache服务器V2.2,虚拟主机在80上,另一个在444上使用SSL。我想redirect所有这种请求: http://domain.tld:444/dir1 http://domain.tld:444/dir2 (没有SSL端口上的https) https://domain.tld:444/dir1 https://domain.tld:444/dir2 为了避免错误400错误的请求。 你知道怎么做? 提前致谢。