我有一些像这样的Apacheconfiguration: # Image hotlinking rule RewriteCond %{HTTP_REFERER} ^http://badsite\.com/ RewriteRule .*/static/artwork/.*\.(jpg|png)$ /static/images/hotlink.png [L] # Redirects RewriteRule ^static/artwork/(.+)$ http://cdn.mysite.com/artwork/$1 [L,R=301] # CodeIgniter RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L] 它应该做到以下几点: 如果图片请求来自badsite.com ,请将其屏蔽并显示热链接图片。 如果定期请求映像,则redirect到cdn子域上托pipe的映像。 否则,如果请求不是文件或目录,则加载一个网页(通过CodeIgniter)。 不过,我认为第一个RewriteCond应用于redirect规则,而不是盗链规则,因为来自该引用者的图像请求被redirect到CDN,而不是盗链图像。 Apache文档 (本节的底部)中的示例意味着换行符会停止RewriteCond应用,但这不会发生。 有没有办法“重置” RewriteCond规则,或者在我的configuration中有一些其他的错误?
我知道,如果您将.html文件中的svn:mime-type Subversion属性设置为text/html那么当通过Apache httpd中的Subversion模块在浏览器中查看文件时,它将与Content-Type: text/html标题,使浏览器呈现为HTML而不是纯文本。 但是,我正在寻找一种方法来执行此操作, 而不使用svn:mime-type属性。 我知道你可以configuration你的svn客户端自动添加属性 – 这不是我想要的,因为我不想确保所有的用户都有这些设置。 我也知道如果没有设置属性,我可以创build一个拒绝提交的预提交钩子,以强制用户设置属性 – 我可能会回到那个,但我正在寻找一些东西侵入。 我也知道,我可以使用post-commit挂钩在服务器端自动添加属性。 我宁愿不这样做(因为用户必须在提交后立即更新,而且这不是微不足道的) – 我正在寻找一个更好的select。 也许在Apache服务器中有重写规则的东西?
我在我的网站上安装了另一个主题,我需要改进它。 我怎样才能更改索引文件只为我的IP地址? 我当前的htaccess文件: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^example.com RewriteRule (.*) http://www.example.com/$1 [R=301,L] RewriteBase / RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> 我需要将索引文件更改为index.WP.php为IP地址203.0.113.111 。 可能吗?
编辑:我很确定我的.htaccess文件没有被执行,问题是不符合我的重写规则。 我没有任何运气让我的.htaccess与mod_rewrite工作。 基本上我所要做的就是从“ http://www.site.com ”和“ https://www.site.com ”中删除“www”。 如果有什么我失踪(conf文件等让我知道我会更新这个) 我jsut无法看到这里有什么错误…我正在使用1和1 VPS III虚拟专用服务器…任何人都有这个问题? 我正在使用Ubuntu 8.04服务器LTS。 这里是我的.htaccess文件(位于@ / var / www / site / trunk / html /) Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule (.*) //%1/$1 [L,R=301] 我的mod_rewrite已启用: 自动重新生成的sym链接在mods-available和/ usr / lib / apache2 / modules /目录下有mod_rewrite.so root@s15348441:/etc/apache2/mods-available# more rewrite.load LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so root@s15348441:/var/log# apache2ctl […]
我的.htaccess文件中有一些RewriteRules。 但是,只有删除了另一个特定的规则才能执行一个特定的规则,而不pipe我如何订购这两个规则。 这是似乎有“低”优先级的规则: RewriteRule ^([0-9]+)$ /beta/forward.php?id=$1 [L] 这是总是优先的规则: RewriteCond %{HTTP_HOST} ^domain1\.net$ [NC] RewriteRule ^(.*)$ http://domain2.net/$1 [R=301,L] domain1和domain2实际上都指向同一个网站。 所以,只要两个规则都在.htaccess文件中,我就可以访问 http://domain1.net/123 第二个规则首先执行,我得到两个redirect,首先http://domain2.net/123 ,然后(当主机名不符合第二个规则了)到http://domain2.net/beta/ forward.php?id = 123 。 我已经尝试修复第二条规则,所以它永远不会执行的只包含数字的url,但我一定是做错了,因为它仍然得到执行: RewriteCond %{HTTP_HOST} ^ domain1\.net$ [NC] RewriteRule ^(.*[^0-9]+.*)$ http://domain2.net/$1 [R=301,L] 只有从.htaccess文件中删除两行,我才能得到第一条规则来处理请求。 任何帮助将不胜感激。
我有一个mod_rewrite行在Apache 2.2下工作,但不在Apache 1.3下: RewriteRule ^(?!index.php)(?!skin/)(?!js/)(.+) /index.php?file=$1 [NC,L] 如果我丢失了方括号之间的负向预测组件,我将失去500个状态码。 GoDaddy不会升级这个客户端软件包(叹气)的httpd,所以有人得到了一个解决scheme,可以在1.3的工作(并不太麻烦:P)? 或者甚至更好,任何人都可以解释这里可能会发生什么? 我仍然很好奇,因为我找不到在1.3中使用的Perl正则expression式引擎不支持负面预测的任何信息…
使用mod_proxy和mod_rewrite有什么区别? 我有一个需要发送特定的URL模式通过tomcat,它运行在同一主机上,但端口8080.我知道这是mod_proxy,但我想知道为什么我不能只使用mod_rewrite,或有什么区别是什么? 可能必须做w /反向代理,并且还在stream水线中处理? 谢谢。
网站结构的变化意味着网站需要更改 site/11-foo/21-bar 至 site/1-foo/1-bar 即我想用RewriteRule从第二个参数中的整数中减去一个常量(在本例中为10),在第三个参数中从整数中减去另一个常量(在本例中为20)。 这些简单的计算可以节省数百万个需要处理的301redirect。 有没有办法使用mod_rewrite做到这一点?
我认为我有这种sorting(主要是感谢如何将非wwwredirect到www而不使用.htaccess硬编码? ),但我仍然不完全了解一些事情。 我想强制所有非SSL连接到我的服务器路由到SSL。 我只有一个虚拟主机(在服务器的生命周期中,这种虚拟主机仍然是可靠的),但我想避免对域名进行硬编码,部分是为了使分段和生产的httpd.conf文件保持一致。 我知道我可以强制使用SSL的mod_rewrite规则的请求 RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 要么 RewriteCond %{SERVER_PORT} ^80$ RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 我有两个比较简单的问题, 我应该比其他任何理由更喜欢其中一个RewriteCond语句? 据推测,如果我使用%{SERVER_PORT}variables,端口8000上的任何连接都将继续在清除中服务。 是否有一些原因我应该避免使用我忽略的%{HTTPS}variables? RewriteRule语句中的%{HTTP_HOST}variables是否会受到尊重,并在请求的Host:标头中自动replace? 有什么情况下可能无法工作? 如果它有所作为,我们使用mod_ssl在RedHat上运行Apache 2,而站点使用Drupal 7。 对不起,什么是一个相对愚蠢的问题; Apache系统pipe理员绝不是我工作的核心部分,所以我尽可能地努力。 谢谢,所有!
这似乎是一个非常简单的问题。 我试图把.htaccess文件中的一个RewriteMap指令,但日志显示一个警告: RewriteMap not allowed here 然后我试着把它放在apache2 / sites-available文件的VirtualHost声明中,但是重新加载apache给了我: RewriteMap not allowed here …fail! 在这两种情况下与RewriteEngine上。 这是指文件系统上的实际映射的位置还是RewriteMap指令? 以防万一,这有助于: <VirtualHost *:80> ServerName localhost etc… <Directory /var/www/site> AllowOverride all Options Indexes FollowSymLinks MultiViews Order allow,deny Allow from 127.0.0.1 RewriteEngine On RewriteMap map txt:/var/www/site/map.txt RewriteRule /path/[^/]+/([^/]+) ${map:$1} etc…