重定向包含“?”的网址文件名中的字符

时间:2011-05-24 22:17:25

标签: php mysql special-characters

我是新手php / mysql开发人员,需要一些帮助。

我正在与.NET开发人员合作开展一个项目。他在.NET中构建了一个URL重定向功能,使用URL中的?(例如,mysite.com?123重定向到www.realsite.com。这个开发人员现在已经消失在我身上,我再也无法访问服务器。

我需要将我的域移动到新服务器并在php / mySQL中重新创建此功能。我需要使用这种技术支持大约40个网址(它们嵌入在QR码中)。我不需要以这种方式生成新重定向的解决方案 - 我有一个不同的解决方案。

我的新服务器将在bluehost上。

非常感谢能帮助我的人。

4 个答案:

答案 0 :(得分:2)

要复制原始设置,您根本不需要涉及PHP。您可以使用某些RewriteRules

在服务器级别完成此操作
RewriteCond %{QUERY_STRING} ^123$
RewriteRule ^$ http://realsite.com/

另见http://wiki.apache.org/httpd/RewriteQueryString

答案 1 :(得分:1)

查询字符串可在$_SERVER['QUERY_STRING']

中找到

答案 2 :(得分:0)

mysite.com域的旧主机上,在DOCUMENT_ROOT中创建.htaccess文件,如下所示:

Options +FollowSymlinks -MultiViews
RewriteEngine on

# for HTTP traffic
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{SERVER_PORT} =80
RewriteRule ^/?$ http://www.realsite.com/? [R=301,L]

# for HTTPS traffic
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{SERVER_PORT} =443
RewriteRule ^/?$ https://www.realsite.com/? [R=301,L]

上面的代码会将每个看似mysite.com?foo的URI重定向到http://www.realsite.com/,状态代码为301.

?最后将丢弃任何现有的QUERY字符串。

答案 3 :(得分:-1)

http://example.com?123

相当于做

http://example.com/index.php?123

您的选择是通过mod_rewrite捕获这些代码,并将请求重定向到专门设置来处理这些遗留URL的脚本。或者,您可以修改index.php脚本以查找代码并在此时执行任何操作。