使用类似try_files东西我怎样才能检查多个目录来查看文件是否存在? 如果文件存在redirect到该位置,如果不显示404。 旧文件夹^/wp-content/uploads(/.*)?$ 多个文件夹来检查 /sites/default/files$1; /sites/default/files/testA$1; /sites/default/files/testB$1; /sites/default/files/testC$1; /sites/default/files/testD$1; 例如:如果文件存在于/sites/default/files/testB$1; 然后将^/wp-content/uploads(/.*)?$到该位置
我试图设置一个nginx重写规则,但无法弄清楚如何让它工作。 我想将所有urlhttps://domainname.com/archives/year/month/date/postnameredirect到https://domainname.com/postname 页面https://domainname.com/archives需要保持活跃。 谁能帮助我? 欢呼声,夏普
我正在尝试通过在POSTpath的节点上强制进行URL编码来纠正URL参数问题,这种情况经常发生。 在这个时候,最好是在代理层修复这个问题,直到开发出更好的解决scheme。但是Haproxy给了我这个问题,我还要提一下,我现在被Haproxy v1.5所困住了(从我可以告诉,也离开使用Lua列表的选项..引入v1.6?)。 这是一个例子是这样的.. 我通常以这种forms得到POST请求 http(s)://sub.domain.com/context/{context}/staticPath/location/{location}/material/{material} 所以,在实践中可能看起来更像这样。 http://sub.domain.com/context/smith/staticePath/location/columbus/material/abc/123 从另一端需要以下 http://sub.domain.com/context/smith/staticePath/location/columbus/material/abc%2F123 问题是,abc / 123是一个单一的材料,需要看起来更像“abc%2F123”,其中“/”斜线正在改变实际的path。 我试图在代理中捕捉到这一点,我可以得到正则expression式来捕获我所需要的,但似乎每当我尝试在捕获组中有一个“斜杠”/ /和/或试图把斜杠放回到取代部分它打破了重写。 下面是我尝试过的一些例子,同时请记住,我打算扩大抓取以抓取整个url,但正在简化尝试解决这些问题,同时我也试图从这个记忆中讲述一些故事点,所以请原谅,如果下面没有死..我尝试了许多,很多组合试图想出一个可行的战略。 通过这种方式.. reqrep (\w+\s?)\/(material)\/(\w+\s?)\/(.*) \1\2\3%2f\4 我可以让捕获组再次将URL重新组合起来,但path节点之间没有path定界符(“/”)。 像这样,它不会取代,它只会发送原始path。 reqrep (\w+\s?)\/(material)\/(\w+\s?)\/(.*) \1\/\2\/\3%2f\4 采取这样的策略… reqrep (\w+\s?)(\/)(material)(\/)(\w+\s?)\/(.*) \1\2\3\4\5%2f\6 我尝试的另一个策略是在捕获组中保留“/”,以便它们可以在replace中出现,而不在捕获组中留下不需要的“斜线”,如下所示。 reqrep (\w+\s?)(\/material\/)(\w+\s?)\/(.*) \1\2\3%2f\4 我也读了一下,看到一些正则expression式有空格,replace有一些间距的例子。我可以通过在replace中使用一些间距来closures,但是在最终的结果中留下不希望的空格。 也.. 如果我逃脱一个空间,然后加一个斜线,似乎更接近..前。 \1\ /\2但是,我会得到像(例如) location /material..东西,像上面提到的添加空间。 我注意到的模式是,当我试图在正则expression式中添加斜杠到捕获组时,它会弄乱replace,使我猜测像..这样的事情是否由于它们在捕获组中而不能逃脱? 而且,为什么我不能把它们放回文字replace? 这是我想象我可能已经偶然发现了一个错误的地步..但也意识到我可以搞砸了。 使用Nginx开发了一个解决scheme,但是如果能够让Haproxy做到这一点,在我们需要的前面站立一个实例也不是最实际的,主要是因为我们已经使用Haproxy来做相当多的其他东西已经。 我真的更喜欢用另一种方式来解决这个问题,但是现在使用代理似乎是我最好的select之一。 我也没有奢望强迫发起人给予更好的path。
我inheritance了一个网站(一个vbulletin论坛),并从另一个主机迁移到我的,通过复制一切与scp命令。 根目录具有以下.htaccess RewriteOptions inherit RewriteEngine on RewriteCond %{HTTP_HOST} ^.*$ RewriteRule ^/?$ "http\:\/\/example\.com\/forums\/content\/" [R=301,L] 我不知道这应该如何工作,但它的工作,无论/forums/content/文件夹不存在的事实。 但是,一旦搬到我的主机,它停止工作,产生404错误。 由于/forums/content.php文件存在,我编辑了.htaccess像这样: RewriteOptions inherit RewriteEngine on RewriteCond %{HTTP_HOST} ^.*$ RewriteRule ^/?$ "http\:\/\/example\.com\/forums\/content.php" [R=301,L] 现在,它的工作,一个小故障:我的浏览器(和其他论坛用户浏览器)caching以前的301redirect,所以我可以达到和使用论坛,只有当我清除浏览器caching(一次),或者如果我inputcontent.php手动(每次)。 我已经尝试了解决方法,通过添加一个RewriteRule到.htaccess来从/forums/content/redirect到/forums/content.php : RewriteOptions inherit RewriteEngine on RewriteCond %{HTTP_HOST} ^.*$ RewriteRule ^/forums/content/$ "http\:\/\/example\.com\/forums\/content.php" [R=301,L] RewriteRule ^/?$ "http\:\/\/example\.com\/forums\/content.php" [R=301,L] 但是,似乎这个规则被忽略了,因为浏览器仍然在/forums/content/目录上得到一个404错误,并且不会redirect到content.php 。 我究竟做错了什么?
我希望将https://www.example.com/somePage.php?id=1234redirect到https://www.example.com/tool/1234 (以便传统链接和书签工作)。 我觉得我很接近,但这似乎不起作用… RewriteRule ^somePage.php?toolid=([0-9]+)$ /tool/$1 [R=301,L] 这里有什么问题?
我试图将rewrite rules从.htaccess文件转换为nginxconfiguration。 作为移动网站到NGINXnetworking服务器的一部分。 这里是从.htaccess文件重写规则 Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI} !\.php$ RewriteCond %{REQUEST_URI} !\.gif$ RewriteCond %{REQUEST_URI} !\.jp?g$ RewriteCond %{REQUEST_URI} !\.png$ RewriteCond %{REQUEST_URI} !\.css$ RewriteCond %{REQUEST_URI} !\.js$ RewriteCond %{REQUEST_URI} !\.html$ RewriteCond %{REQUEST_URI} !\.xhtml$ RewriteCond %{REQUEST_URI} !\.htm$ RewriteCond %{REQUEST_URI} !\.ico$ RewriteRule (.*) index.php [L] RewriteRule (.*).html index.php [L] 我当前的nginx config 。 server { listen 80; server_name example.com; […]
请帮我使用Apache 2.4.18。 这是与这个问题作斗争的第三天。 build筑 www.myserver.com:用于stream量redirect的前台服务器 内部服务器与本地IP 192.168.0.10包含2个文件夹与一个Web应用程序每一个 192.168.0.10/app01 192.168.0.10/app02 我想通过他们的子域来访问这些networking应用程序 app01.myserver.com和 app02.myserver.com 这是我的虚拟主机configuration文件 <VirtualHost *:80> ServerName app01.myserver.com ProxyRequests Off ProxyPreserveHost On ProxyPass / http://192.168.0.10/app01 ProxyPassReverse / http://192.168.0.10/app01 </VirtualHost> 它的工作,但部分:stream量正在redirect,但我有问题的链接。 问题 在app01.myserver.com上login后,浏览器redirect到app01.myserver.com/dashboard ,应用程序菜单上的某些链接选项会redirect到它们各自的模块,但是: 当我点击app01.myserver.com/profile时,我被redirect到app01.myserver.com/profile 然后我被redirect到app01.myserver.com/app01/profile 它正确地给了我一个404错误,因为“ app01 / profile ”不存在。 我想我需要一个重写规则,或者ProxyPass和ProxyPassReverse是不正确的。 任何帮助,将不胜感激。
我目前已经改写在example.com工作,整个网站是HTTPS,使用这个: RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] 我需要很多文件在这个完全相同的网站上,可以通过第二个域名访问,并通过HTTP,例如: http://example.net/files/…. 我尝试添加example.net作为ServerAlias但当然这只是redirect,然后重写到https://example.net/files 我从互联网复制了重写规则,并且不确定修改它的正确方法。 我正在按照改写重写规则的思路来思考: RewriteRule ^example.com/?(.*) https://example.com/$1 [R,L] 所以只有在包含example.com URL才会被重写。那么我是否需要为TLD域自身重写规则,而不是通配符条目? 请有人可以帮助正确的方式来实现这一点,以便对ServerAlias ( example.net )的请求不被重写?
我在我的httpd.conf文件中有这个: <VirtualHost IP.AD.DR.ESS:80> ServerName example.com Redirect Permanent / https://example.net/ </VirtualHost> 这成功地将以前在http://example.com上的所有内容redirect到https://example.net新对应位置。 但是,我发现一个目录example.com/specialdir/必须保留在旧服务器上,因为它需要访问的数据不在新服务器上。 (需要几个月才能完成涉及其他几十个站点的迁移。) 有没有一个合理的方法来解决这个问题在httpd.conf或者我将不得不使用一堆.htaccess文件? 我怀疑我能用<Location>容器做些什么,但是我不知道要find这些信息的正确问题。
我有一个适用于我的Apache的httpd.confconfiguration的规则,如下所示: <DirectoryMatch "^/.*/\..*/"> Order deny,allow Deny from all </DirectoryMatch> 它阻止访问隐藏的目录,如我们的webroot中的.git。 但是,我们使用的Web应用程序(Magento)使用媒体目录中的需要公开访问的.thumbs子目录。 我有一个在.htaccess工作明确禁止访问隐藏的目录的规则: RewriteRule (^\.|/\.) – [F] 但我似乎无法find上述行的允许版本。 上下文:我们不修改Apache httpd.confconfiguration文件的原因是我们希望只用基于代码的部署来解决这个问题,并且需要在每个生命周期环境中重新加载Web服务器的configuration。