如何将myurl.com/targeturl.com重定向到myurl.com/?site=targeturl(PHP/Apache/Linux)?

如何将myurl.com/targeturl.com重定向到myurl.com/?site=targeturl(PHP/Apache/Linux)?,php,apache,mod-rewrite,redirect,Php,Apache,Mod Rewrite,Redirect,我正在写一个网站,允许人们评估网页的可读性(Flesch Kincaid阅读方便,感谢之类的东西) 理想情况下,我希望用户只需使用我的URL就可以访问目标URL(就像许多镜像站点一样),而且他们可以看到结果 我猜这必须用mod_rewrite来完成,但我不确定如何编写,特别是考虑到URL可能包含太多潜在的垃圾 我怎么说: 如果请求是mysite.com/anything) 重定向到mysite.com/?site=任何内容 除非请求是为了: 仅限mysite.com/ 请求的对象是mysite

我正在写一个网站,允许人们评估网页的可读性(Flesch Kincaid阅读方便,感谢之类的东西)

理想情况下,我希望用户只需使用我的URL就可以访问目标URL(就像许多镜像站点一样),而且他们可以看到结果

我猜这必须用mod_rewrite来完成,但我不确定如何编写,特别是考虑到URL可能包含太多潜在的垃圾

我怎么说:

如果请求是
mysite.com/anything

重定向到
mysite.com/?site=任何内容

除非请求是为了:

  • 仅限
    mysite.com/

  • 请求的对象是
    mysite.com/ajaxresponse.php?target=something

  • 其中请求为
    about.php
    loading.gif

可悲的是,到目前为止,我所尝试的一切都以重定向循环结束

非常感谢,


Jack

编辑您的
.htaccess
以获得:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.+)$ ?site=$1 [NC]
正则表达式中的
+
将保持索引页的原样。如有必要,可进行其他编辑(将其设置为302永久重定向等)

要排除特定页面,应添加一行:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(ajax\.php|whatever\.gif) - [L]
RewriteRule ^(.+)$ ?site=$1 [NC]
试试这个规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} !(^|&)site=[^&]
RewriteRule .+ /?site=$0 [QSA]

第一个条件是排除对现有文件的请求,第二个条件是避免重定向,因为已经存在站点URL参数。

Ah,谢谢!我还意识到,在我问了我的问题之后,还有一些其他特定的URL、一个图像和一个AJAX响应页面需要从规则中排除,有没有一种简单的方法可以做到这一点?谢谢你,太好了。非常感谢。