Articles of mod rewrite

在线mod_rewritetesting工具

mod_rewrite语句可能很难编写和debugging,因此我需要一个轻量级的在线工具,使我能够即时testing我的RewriteCond , RewriteRule语句。 任何这样的工具?

未findapache服务器状态。 检查是否启用了mod_status

我在munin节点上启用了apache_插件: ln -sv /usr/share/munin/plugins/apache_* /etc/munin/plugins/ 重新启动service munin-node restart这里是我得到的错误: $ munin-node-configure –suggest 2>/dev/null | grep "apache\|Plugin\|——" Plugin | Used | Suggestions —— | —- | ———– apache_accesses | yes | no [apache server-status not found. check if mod_status is enabled] apache_processes | yes | no [apache server-status not found. check if mod_status is enabled] apache_volume | […]

Apache:在哪里检查redirect日志?

我在一台机器上复制了RewriteCond和RewriteRul e。 根据这些规则,一些请求将被redirect到另一台机器。 那么有没有一个Apache日志清楚地显示redirect是如何发生的? 因为redirect正在以我没有预料到的方式发生。

为什么我的RewriteLog不起作用?

我有一个.htaccess看起来像这样: RewriteEngine on RewriteLog "/Applications/MAMP/logs/rewrite_engine_log" RewriteCond %{REQUEST_URI} !/(index.php|css|images|js)/.*$ RewriteRule (.*) /mysite/index.php/$1 当我添加RewriteLog指令时,我得到一个内部服务器错误。 在Apache日志文件中,我得到这个信息: /Applications/MAMP/htdocs/mysite/.htaccess: RewriteLog not allowed here 我没有手动创buildrewrite_engine_log文件,但是我的Mac上存在path/ Applications / MAMP / logs /。 我可以尝试下一步获取RewriteEngine日志文件?

创buildVHost&转发子域到它

所以大师 我有一个简单的.htaccess文件,我只redirect非www到我的web应用程序的www。 现在我想要做的是 创build一个新的虚拟主机,如http://subdomain.mydomain.tld 为任何来到该子域的人创build一个redirect到我的应用程序的文件夹,如app / webroot / subdomain 我当前的.htaccess看起来像这样 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} !^www\.mydomain\.tld [NC] RewriteRule ^(.*)$ http://www.mydomain.tld/$1 [R=301.L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app/webroot/$1 [QSA,L] </IfModule> 我将如何去呢? 我可以在我的.htaccess文件中完成这一切吗?还是我需要惹恼GoDaddy? 如果这是有道理的,我宁愿不在应用程序中这样做。 我正在运行Ubuntu 10.04 + Apache 2.2.14-5 谢谢

在HTTP OPTIONS请求中在Apache上返回“200 OK”

我试图实现跨域HTTP访问控制,而不触及任何代码。 我有我的Apache(2)服务器返回正确的访问控制标题与此块: Header set Access-Control-Allow-Origin "*" Header set Access-Control-Allow-Methods "POST, GET, OPTIONS" 当浏览器发送一个HTTP OPTIONS请求(它存储在REQUEST_METHOD环境variables中)时,我现在需要阻止Apache执行我的代码,返回200 OK 。 当请求方法是OPTIONS时,如何configurationApache来响应“200 OK”? 我已经试过这个mod_rewrite块,但访问控制标头丢失。 RewriteEngine On RewriteCond %{REQUEST_METHOD} OPTIONS RewriteRule ^(.*)$ $1 [R=200,L]

.htaccess不能正确地redirect到www-prefixed页面

我正在尝试redirect一个url没有www。 到www.version(example.com到www.example.com)。 我使用平常 RewriteCond %{HTTP_HOST} ^example\.com [nc] RewriteRule (.*) http://www.example.com/$1 [R=301,L] 这适用于我所有的其他项目。 但是,在这个特定的网站,它以一个redirect循环结束。 这是奇怪的部分:我试图curl非www版本,以查看它使用curl –get http://example.com –dump-header domain.header > domain.html发送什么标题curl –get http://example.com –dump-header domain.header > domain.html 。 头文件看起来像这样: HTTP/1.1 301 Moved Permanently Date: Mon, 06 Jun 2011 14:45:16 GMT Server: Apache/2.2.16 (Debian) Location: http://example.com/ Vary: Accept-Encoding Content-Length: 310 Content-Type: text/html; charset=iso-8859-1 但是,生成的HTML文件是这样的: <!DOCTYPE HTML PUBLIC […]

redirectSSL而不提高警报

客户端只有www.site.com版本的域名才具有SSL证书,而不是site.com。 通过mod_rewriteredirect常规的HTTP不是问题。 但是,这种方法似乎失败了我们的HTTPS。 我们希望将https://site.com请求redirect到https://www.site.com 。 可以这样做,而不会引发浏览器中的无效证书警告,或获得通配符证书?

使用Cookie控制Nginx代理目标?

我试图转换反向代理使用有趣的Apache mod_rewrite设置使用Nginx来代替(由于外部的担忧,我们正在从Apache移动到Nginx,大多数一切正常,除了这部分)。 我原来的设置是读取一个HTTP cookie(由某个应用程序设置),根据它的值,将反向代理指向不同的后端。 它是这样的: RewriteCond %{HTTP_COOKIE} proxy-target-A RewriteRule ^/original-request/ http://backend-a/some-application [P,QSA] RewriteCond %{HTTP_COOKIE} proxy-target-B RewriteRule ^/original-request http://backend-b/another-application [P,QSA] RewriteRule ^/original-request http://primary-backend/original-application [P,QSA] 我试图达到使用Nginx相同,我的初始configuration是这样的(其中“proxy_override”是cookie的名称): location /original-request { if ($cookie_proxy_override = "proxy-target-A") { rewrite . http://backend-a/some-application; break; } if ($cookie_proxy_override = "proxy-target-B") { rewrite . http://backend-b/another-application; break; } proxy_pass http://primary-backend/original-application; } 但事实并非如此。 我试着看看Nginx是否可以通过写主代理来redirect到基于${cookie_proxy_override}东西来读取我的cookie,我可以看到它读取的内容很好,但是if似乎总是失败。 我的下一个尝试,根据Rikih的回答是这样的: location /original-request […]

mod_rewrite不会转发GET参数

我在开发机器上用mod_rewrite设置Apache时遇到了麻烦。 Mod_rewrite是活动的,并且对于一些规则来说工作得很好。 有些规则不能像预期那样工作,就像这样: RewriteRule ^static/([^/]+)/([^/]+) /static.php?sISOCode=$1&sPage=$2 在static.php我这样做(debugging): <?php print_r($_GET); print_r($_POST); print_r($_SERVER); die(); 打印(从$ _SERVER数组中删除一些项目): Array ( ) Array ( ) Array ( [SERVER_SIGNATURE] => <address>Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch Server at alpha.prove.no Port 80</address> [SERVER_SOFTWARE] => Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch [SERVER_ADDR] => 127.0.0.1 [SERVER_PORT] => 80 [REMOTE_ADDR] => 127.0.0.1 [DOCUMENT_ROOT] => /home/veg/workspace/project [SERVER_ADMIN] => […]