标签: mod-rewrite

mod_rewrite urlencoding一个已经urlencoded查询字符串参数 - 任何方法来禁用它?

我们有一些非常基本的mod_rewrite规则:

RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302,L]
Run Code Online (Sandbox Code Playgroud)

mod_rewrite似乎完成了它的工作,如果用户正在访问:

something.swf?param=value,它被正确地重定向到 http://www.newdomain.com/something.swf?param=value

问题出在这种情况:

www.olddomain.com/something.swf?param=URL_ENCODED_VALUE
Run Code Online (Sandbox Code Playgroud)

最终发生的事情是mod_rewrite将它自己重新编码查询字符串参数

所以用户最终得到的是:

www.olddomain.com/something.swf?param=URL_ENCODED_VALUE
Run Code Online (Sandbox Code Playgroud)

重定向

www.newdomain.com/something.swf?param=URL_ENCODED_VALUE_OF_URL_ENCODED_VALUE
Run Code Online (Sandbox Code Playgroud)

所以我们最终得到一个双urlencoded值.boourns!

虽然我明白我们可以制定一个\?(.*)...... ?$1规则,但我认为必须有一种方法告诉mod_rewrite不要urlencode查询字符串参数...我们希望避免使用2条规则,因为有效路径是:

something.swf (no query string)
Run Code Online (Sandbox Code Playgroud)

something.swf?someparams...
Run Code Online (Sandbox Code Playgroud)

所以是的,理想情况下......告诉mod_rewrite:请不要查询字符串参数的urlencoding ...只需通过直接传递到新的URL R=302.

apache mod-rewrite

52
推荐指数
1
解决办法
3万
查看次数

.htaccess从URL +目录中删除WWW

这对许多人来说似乎不是问题(读:我找不到答案),但我想更新以下htaccess代码,不仅要从URL中删除'www',还要删除任何子代码访问的目录.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

有了这个,http://www.example.com/any/解决得很好,但是我希望它像root一样重定向到http://example.com/any/.

url .htaccess mod-rewrite no-www

51
推荐指数
3
解决办法
6万
查看次数

RewriteBase做了什么以及如何使用它?

我正在努力学习一些.htaccess技巧.我遇到了RewriteBase指令,但无法让它正常工作.

我想知道这个指令具体是什么以及如何使用它.RewriteBase在StackOverflow和Apache文档中已经有过一些讨论但仍然无法得到我的问题的明确答案.

有人可以告诉我一个简单但有效的例子RewriteBase吗?

apache .htaccess mod-rewrite

49
推荐指数
2
解决办法
6万
查看次数

如何将查询字符串变量与mod_rewrite匹配?

假设我有带有查询字符串参数的URL,如下所示:

/index.php?book=DesignPatterns&page=139
/index.php?book=Refactoring&page=285
Run Code Online (Sandbox Code Playgroud)

使用mod_rewrite,如何将它们重定向到这些SES URL?

/DesignPatterns/139
/Refactoring/285
Run Code Online (Sandbox Code Playgroud)

regex apache mod-rewrite query-string

46
推荐指数
1
解决办法
3万
查看次数

如何在任何操作系统上启用mod_rewrite?

如果我理解正确,我需要放入一些东西httpd.config来启用mod_rewrite.如果这是真的,我需要什么就摆在httpd.confapache.conf?请具体操作系统.

php mod-rewrite

46
推荐指数
3
解决办法
19万
查看次数

如果条件不匹配,则重写规则

如果URL 与"论坛"路径匹配,我该如何执行规则?

例如:

RewriteCond IF URL IS NOT forums
RewriteRule !\.(js|gif|css|jpg|png)$ %{DOCUMENT_ROOT}/index.php [L]
Run Code Online (Sandbox Code Playgroud)

apache mod-rewrite

46
推荐指数
1
解决办法
8万
查看次数

apache HTTP:.htaccess中的X-Forwarded-Proto导致dev环境中的重定向循环

我不得不更新我的.htaccess:

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)

对此:

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)

让它在AWS Elasic负载均衡器后面工作.

这一切似乎在AWS上运行良好,但在我的本地环境中,我陷入了重定向循环.

如何让这个设置在两种环境中正常工作?

apache .htaccess mod-rewrite redirect amazon-web-services

46
推荐指数
1
解决办法
4万
查看次数

.htaccess中单个RewriteCond的多个RewriteRules

我的.htaccess中有以下命令

    RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.example\.com [NC]
    RewriteRule ^(.*?)-([a-z]+) %2/$1.$2 [L]
    RewriteRule ^(.*?)-([0-9]+)([a-z]) %2/$1$3.$2 [L]
Run Code Online (Sandbox Code Playgroud)

%2在第二行和后续行中不起作用.我可以为%2定义任何变量并在所有RewriteRule命令中使用它吗?以下命令有效

     RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.example\.com [NC]
     RewriteRule ^(.*?)-([a-z]+) %2/$1.$2 [L]
     RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.example\.com [NC]
     RewriteRule ^(.*?)-([0-9]+)([a-z]) %2/$1$3.$2 [L]
Run Code Online (Sandbox Code Playgroud)

但是我希望在没有重复条件的情况下将%2用于多个规则行.

apache .htaccess mod-rewrite

45
推荐指数
4
解决办法
6万
查看次数

apache mod_rewrite无法正常运行或未启用

php.ini在Apache上安装了rewrite_module并进行了修改.

我创建rewrite.php.htaccess文件,但它不起作用.

我的文件系统文件夹如:

/var/www/html
/var/www/html/test
/var/www/html/test/.htaccess
/var/www/html/test/rewrite.php
Run Code Online (Sandbox Code Playgroud)

/var/www/html/.htaccess内容是:

$ cat /var/www/html/test/.htaccess 

RewriteEngine On 
RewriteRule ^link([^/]*).html$ rewrite.php?link=$1 [L]
Run Code Online (Sandbox Code Playgroud)

/var/www/html/rewrite.php

$ cat /var/www/html/test/rewrite.php 

<html>
<h2 align=center> 
<?php 
// mod_rewrite Test Page 
// Copyright 2006 Webune.com 
if($_GET['link']==1){echo"You are not using mod_rewrite";} 
elseif($_GET['link']==2){echo"Congratulations!! You are using Apache mod_rewrite";} 
else{echo"Linux Apache mod_rewrte Test Tutorial";} 
?> 
</h2> 
<hr> 
<head> 
<title>How To Test mod_rewrite in Apache Linux Server</title> 
</head> 
<body> 
<p align="center">by <a href="http://www.webune.com">Webune</a></p> 
<p><a href="rewrite.php?link=1">LINK1</a> = rewrite.php?link=1</p>
<p><a href="link2.html">LINK2</a> = …
Run Code Online (Sandbox Code Playgroud)

apache mod-rewrite

44
推荐指数
3
解决办法
11万
查看次数

symfony2重写规则.htaccess app.php

我将symfony2项目上传到服务器树丛.主页面加载,但所有链接都被破坏.我尝试将app.php添加到网址中.它确实有效,但是:

我有这样的路线:

www.something.com/app.php/something

我希望他们是:

www.something.com/something.

我一直在阅读,我应该在.htaccess上加上一些重写规则.

我发现了这些规则,但它们似乎不起作用:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

.htaccess mod-rewrite symfony

44
推荐指数
2
解决办法
8万
查看次数