我有一个简单的.htaccess文件,该文件在网站的http版本上效果很好,但是当我转到https时却不行。 为什么? RewriteEngine on #This is so if the file exists then use the file RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^ %{REQUEST_FILENAME} [L] #These conditions check if a file or folder exists just for reference #RewriteCond %{REQUEST_FILENAME} !-f #RewriteCond %{REQUEST_FILENAME} !-d #if someone adds ".php" to the slug get rid of it RewriteRule ^(.*)\.php$ $1 #don't […]
在传递查询string时,我们遇到了一个奇怪的问题(可能是一个bug),Apache mod_rewrite的行为。 为了重现,我们使用默认的Apacheconfiguration设置了一个干净的Ubuntu(oneiric)安装。 我们启用了mod_rewrite,在默认的站点configuration中,我们添加了以下内容: RewriteEngine on RewriteRule ^/(.*)$ /r/$1 [R] 为了testing,我们使用curl: curl -I 'http://[ubuntu-machine]/a/b%20c?a%20b' 相关的输出是: HTTP/1.1 302 Found Server: Apache/2.2.20 (Ubuntu) Location: http://[ubuntu-machine]/r/a/b%20c?a%2520b 正如你所看到的,查询string是双重转义的,这是错误的。 有谁知道我们如何解决这个问题? 我们已经尝试了几件事情: 添加[NE]。 这给了我们正确的查询string,但是path没有转义,这导致了新的问题。 添加[NE,B]。 这似乎工作,但是导致path的a和b部分之间的/将被转义。 手动翻阅查询string。 RewriteCond %{QUERY_STRING} .* RewriteMap unescape int:unescape RewriteRule ^(.*)$ $1?${unescape:%{QUERY_STRING}} 但是,这意味着我们无法区分查询string中的&和转义的& 。 更新: 这个错误报告描述了同样的问题。 第一条评论链接到一个明显解决问题的提交,但是正如Pieter在下面所说的那样,似乎并没有真正修复这个问题。
我正在使用mod_rewrite来重写这样的URL: http://example.com/1,2,3,4/foo/ 通过在.htaccess中这样做: RewriteEngine On RewriteRule ^([\d,]+)/foo/$ /foo.php?id=$1 [L,QSA] 它工作正常,除了当“1,2,3,4”变成超过255个字符的string时,Apache返回一个“403 Forbidden”。 直接访问foo.php?id=1,2,3,4是没有问题的,即使是很长的idstring,但是这不是我的select。 有一些Apache或其他设置我应该调整? 更新 :我用RewriteLogLevel 9打开RewriteLog。用一个简短的idstring,我在我的日志文件中有几行。 但是当idstring大于255个字符时, 没有任何logging(好像mod_rewrite甚至没有执行?)。 如果您发现这个问题有趣/有帮助,请注意它。
如何在Ubuntu 10.04中启用Apache的mod_rewrite? 我试图从/etc/apache2/mods-available将rewrite.load拷贝到etc/apache2/mods-enabled但是没有奏效。
我们有两台Apache服务器作为前端,四台Tomcat服务器作为后端,使用mod_proxy模块作为负载均衡器。 现在,我们要从mod_proxy负载平衡器中排除单个tomcat url。 有什么方法或规则可以排除? 代理平衡器设置: <Proxy balancer://backend-cluster1> BalancerMember http://10.0.0.1:8080 loadfactor=1 route=test1 retry=10 BalancerMember http://10.0.0.2:8080 loadfactor=1 route=test2 retry=10 </Proxy>
我在apache2上build立了一个WordPress的环境,在Ubuntu 12.04的新安装上。 为了获得友好的URLS工作,我试图设置mod_rewrite。 我遵循我在网上find的一些指令,并使用a2enmod。 现在。 重新启动Apache后,我想检查模块是否实际加载。 我发现获取已加载模块列表的命令是这样的: apache2 -t -D DUMP_MODULES 但是,这会返回一个错误: apache2:错误的用户名$ {APACHE_RUN_USER} 那么,我该如何列出所有加载的模块,否则检查是否已经启用了mod_rewrite?
这被上传到我的一个FTP文件夹。 我不熟悉Apache,但仍然好奇 – 有人能告诉我这个文件试图提交什么types的卑鄙行为? 谢谢! RewriteEngine On RewriteCond %{HTTP_REFERER} .*google.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*ask.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*yahoo.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*excite.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*altavista.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*msn.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*netscape.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*aol.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*hotbot.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*goto.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*infoseek.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*mamma.*$ [NC,OR] […]
我有一堆重写规则,我必须从Apache端口到Nginx。 这是一个相当痛苦的过程,因为我无法看到我的重写规则和“是否”条件正在按照我的要求工作。 Apache确实已经为其重写模块进行了debugging。 我能为nginx做些什么?
我有一个Apache的专用服务器,我已经设置了一些VirtualHosts。 我已经build立了一个处理www域以及非www域。 我的VH .conf文件为www: <VirtualHost *> DocumentRoot /var/www/site ServerName www.example.com <Directory "/var/www/site"> allow from all </Directory> </VirtualHost> 有了这个.htaccess : RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} ^www.example.com [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301] 有没有一种简单的方法将wwwredirect到非www版本? 目前我发送两个版本到相同的DocumentRoot和使用.htaccess但我相信我必须能够在VirtualHost文件中完成。
这是关于Apache的mod_rewrite的典型问题 。 更改请求URL或将用户redirect到与原始请求不同的URL是使用mod_rewrite完成的。 这包括诸如: 将HTTP更改为HTTPS(或其他方式) 将请求更改为不存在的页面以replace新的replace。 修改URL格式(例如?id = 3433到/ id / 3433) 基于引用者基于浏览器呈现基于月球和太阳下任何可能的任何事物的不同页面。 任何你想搞乱的URL 一切你想知道Mod_Rewrite规则,但不敢问! 我怎样才能成为写mod_rewrite规则的专家? mod_rewrite规则的基本格式和结构是什么? 我需要掌握哪些正则expression式的forms/风格? 编写重写规则时最常见的错误/陷阱是什么? 什么是testing和validationmod_rewrite规则的好方法? 是否有我应该知道的mod_rewrite规则的SEO或性能影响? 有没有常见的情况下,mod_rewrite似乎是正确的工具,但不是? 什么是一些常见的例子? 一个地方来testing你的规则 htaccesstesting仪网站是玩游戏规则和testing的好地方。 它甚至显示debugging输出,所以你可以看到什么匹配,什么没有。