如何将myurl.com/targeturl.com重定向到myurl.com/?site=targeturl(PHP/Apache/Linux)?
我正在写一个网站,允许人们评估网页的可读性(Flesch Kincaid阅读方便,感谢之类的东西) 理想情况下,我希望用户只需使用我的URL就可以访问目标URL(就像许多镜像站点一样),而且他们可以看到结果 我猜这必须用mod_rewrite来完成,但我不确定如何编写,特别是考虑到URL可能包含太多潜在的垃圾 我怎么说: 如果请求是如何将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
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响应页面需要从规则中排除,有没有一种简单的方法可以做到这一点?谢谢你,太好了。非常感谢。