国防部重写的URL,如 “http://miniqr.com/http://www.anyurl.com/”(没有错误)

问题描述:

确定,基本上国防部重写的URL,如 “http://miniqr.com/http://www.anyurl.com/”(没有错误)

http://miniqr.com/http://www.anyurl.com/

(无错字)

应该叫

http://miniqr.com/api/create.php?content=http://www.anyurl.com/

实现这一目标,我有这个根的.htaccess

重写规则^ HTTP:\/\ /(。*)$ \/API \ /create.php \含量= HTTP:\/\/$ 1 [L]

重写规则^ HTTPS:(。*)?\/\/$ \/API \ /create.php \含量= HTTPS:\/\/$ 1 [L]

悲哀的是,它曾经工作过,那么服务器进行了更新,现在它不工作

任何人知道为什么吗? (或不知道另一种方式来做到这一点),帮助将是真棒

我的.htaccess差不多这个样子的:

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{HTTP_HOST} !^miniqr\.com$ [NC] 
RewriteRule ^(.*)$ http://miniqr.com/$1 [L,R=301] 

RewriteRule ^(^$|index\.php|robots\.txt|docs|reader\/) - [L] 
RewriteRule ^http:\/\/(.*)$ \/api\/create\.php\?content=http:\/\/$1 [L] 
RewriteRule ^https:\/\/(.*)$ \/api\/create\.php\?content=https:\/\/$1 [L] 

RewriteRule看到它之前,URL路径被标准化,特别是,///替代。你应该申请您的规则到原来的请求,而不是像这样:

RewriteCond %{REQUEST_URI} ^/(https?:.*) 
RewriteRule^/api/create.php?content=%1 [L] 

%1是指由RewriteCond完成了比赛。
%{REQUEST_URI}是在HTTP请求的第一行的实际查询。


可替代地,是不太严格的,并接受方案之后的单个/以及//,由于路径可能由用户代理或代理通过类似地归一化。

+0

尝试的第一个方法,非常完美,将看到有关其他。多谢 – 2011-03-01 15:07:29

不要将此引入重定向循环?:

RewriteCond %{HTTP_HOST} !^miniqr\.com$ [NC] 
RewriteRule ^(.*)$ http://miniqr.com/$1 [L,R=301] 

你想用它达到什么目的?

+0

http://www.miniqr.com/.* - > HTTP 301 - > http://miniqr.com/.*和它似乎工作 – 2011-03-01 14:56:46

+0

评论CMS搞砸了上述评论... WWW。 miniqr.com - > HTTP 301 - > miniqr.com – 2011-03-01 15:08:50