从.htaccess(mod_rewrite)中的URL中删除http

时间:2011-03-02 13:48:18

标签: php .htaccess mod-rewrite

多年来一直坚持这种情况并尝试了很多修复但却无法理解它!

我运行一个网站,根据网址生成网页内容。例如:

http://www.mysite.com/http://www.supercheese.com 

将从mysite.com和supercheese.com生成mashup内容

我使用的.htaccess(在mysite.com上)是:

<ifModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{ENV:REDIRECT_STATUS} 200
    RewriteRule .* - [L]
    RewriteRule assets/.* - [L]
    RewriteRule ^(.*)$  test.php?url=$1 [NC,L]

</ifModule>

所以基本上第二个URL是在php字符串中传递的。

我的问题是,我需要使用.htaccess

从地址中删除http://

E.G。如果有人输入:

http://www.mysite.com/http://www.supercheese.com 

我需要它成为:

http://www.mysite.com/www.supercheese.com 

非常感谢您提前看一下这个。你们摇滚。

2 个答案:

答案 0 :(得分:2)

您只需使用RedirectMatch

即可

http://httpd.apache.org/docs/2.0/mod/mod_alias.html#redirectmatch

尝试:

RedirectMatch ^/https?://(.*)$ http://www.mysite.com/$1

编辑:你必须在重写规则之前加上这个

修改:在http

之前添加/

编辑:大卫是对的,看看他的回答并改变你写这些网址的方式

答案 1 :(得分:1)

在我看来,网址方案本质上存在问题。

在网址中使用未编码的冒号: - 除了跟随http指定访问协议 - 似乎让服务器认为它正在对http://username:password@hostname/形式进行身份验证

我知道它没有直接回答这个问题,解决方法是改变url-scheme。 - (