2012-07-10 128 views
1

我知道,wordpress将紧密匹配的网址重定向到其原始网址。但是,我需要知道代码执行开始时的实际url。可能吗?检索wordpress页面的原始网址

1)如果有任何方法需要一个url作为参数,并返回它的原始wordpress url ,这将是伟大的,但不确定,不管它是否存在。有没有这样的事情?

2)代码中的哪个实际执行此测试和重定向?

3)是否有任何钩子可以用来添加插件来控制这种情况?

在此先感谢。

例子:

想,我对这个URL一个帖子: “http://mydomain.com/example-post-page”

现在,如果我尝试通过“HTTP访问它: //mydomain.com/example-post-page/“,它会将您重定向到原始的第一个网址。对于url的其他几个小变化也是如此,所有这些都会将你重定向到实际的permalink url。

我的目标是控制这个重定向。这就是为什么当我在“http://mydomain.com/example-post-page/”时,我喜欢知道(我在root index.php中的代码)是否这是origianl永久链接或是其他内容,在重定向之前。

回答

0

好了,最后我得到了它以下列方式进行,对我来说似乎确定:

1)收到约网址。 2)使用这个大约的url进行cURL请求。 3)获取响应网址。 4)返回响应url。

代码如下:

function get_actual_url($approx_url){ 
$curlObj = curl_init(); 
curl_setopt($curlObj, CURLOPT_URL, $approx_url); 
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curlObj, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($curlObj, CURLOPT_ENCODING , "gzip"); 
curl_setopt($curlObj, CURLOPT_TIMEOUT,180); 

$content = curl_exec($curlObj); 

$info = curl_getinfo($curlObj); 
curl_close($curlObj); 

if(!empty($info) && !empty($info["url"])){ 
    return $info["url"]; 
} 
else { 
    return $approx_url; 
}} 
1

如果您试图在PHP中执行此操作,您可以询问服务器请求的URL是什么。尝试访问$ _SERVER []并查看它是否具有您要查找的内容。 (普罗蒂普:看到PHP整个变量,使用print_r($_SERVER);

我执行我的WordPress站点的命令回来:

Array 
(
    [SERVER_SOFTWARE] => Apache 
    [REQUEST_URI] => /wordpress_NEWURL/cookbook/ 
    [REDIRECT_SCRIPT_URL] => /wordpress_NEWURL/cookbook/ 
    [REDIRECT_SCRIPT_URI] => http://openmdao.org/wordpress_NEWURL/cookbook/ 
    [REDIRECT_HTTPS] => off 
    [REDIRECT_X-FORWARDED-PROTO] => http 
    [REDIRECT_X-FORWARDED-SSL] => off 
    [REDIRECT_STATUS] => 200 
    [SCRIPT_URL] => /wordpress_NEWURL/cookbook/ 
    [SCRIPT_URI] => http://openmdao.org/wordpress_NEWURL/cookbook/ 
    [HTTPS] => off 
    [X-FORWARDED-PROTO] => http 
    [X-FORWARDED-SSL] => off 
    [HTTP_HOST] => openmdao.org 
    [HTTP_X_FORWARDED_HOST] => openmdao.org 
    [HTTP_X_FORWARDED_SERVER] => openmdao.org 
    [HTTP_X_FORWARDED_FOR] => 128.156.10.80 
    [HTTP_HTTP_X_FORWARDED_PROTO] => http 
    [HTTP_HTTPS] => off 
    [HTTP_X_FORWARDED_PROTO] => http 
    [HTTP_X_FORWARDED_SSL] => off 
    [HTTP_CONNECTION] => close 
    [CONTENT_LENGTH] => 92 
    [HTTP_CACHE_CONTROL] => max-age=0 
    [HTTP_ORIGIN] => http://openmdao.org 
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5 
    [CONTENT_TYPE] => application/x-www-form-urlencoded 
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
    [HTTP_REFERER] => http://openmdao.org/wordpress_NEWURL/cookbook/ 
    [HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch 
    [HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8 
    [HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.3 
    [HTTP_COOKIE] => wp-settings-1=m7%3Do%26m11%3Do%26wplink%3D0%26editor%3Dtinymce%26hidetb%3D1%26align%3Dright; wp-settings-time-1=1341576701; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_7f72de226f3f83cb831f7a36bd420125=admin%7C1342021433%7C1c54f9729f967300e8d1ecc80eea7e38; w3tc_referrer=http%3A%2F%2Fopenmdao.org%2Fwordpress_test%2Fsdk-1.5.6.2%2F_samples%2F; wp-settings-1=m7%3Do%26m11%3Do%26wplink%3D0; wp-settings-time-1=1339595284; greeting_set=True; _gauges_unique_month=1; _gauges_unique_year=1; _gauges_unique=1; wordpress_test_cookie=WP+Cookie+check; PHPSESSID=0302b71abfbfd5a8d7854ac168aba2f9; sessionid=7b87104b87d95624cab0fe282079aa07; csrftoken=e72c25d0cdc3a6682c89e4680742ff3b; __utma=192130932.1535996015.1339438190.1341938618.1341945509.58; __utmc=192130932; __utmz=192130932.1339605598.7.2.utmcsr=rss|utmccn=new-website|utmcmd=rss 
    [HTTP_VIA] => 1.1 www-fw.grc.nasa.gov 8B58912A 
    [PATH] => /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/home/ph/trunk/python-hosting.com/new_site/monitor:/home/ph/trunk/python-hosting.com/new_site/manual_scripts:/root/bin 
    [SERVER_SIGNATURE] => 
    [SERVER_NAME] => openmdao.org 
    [SERVER_ADDR] => 127.0.0.1 
    [SERVER_PORT] => 80 
    [REMOTE_ADDR] => 128.156.10.80 
    [DOCUMENT_ROOT] => /home/openmdao/webapps/_ 
    [SERVER_ADMIN] => [no address given] 
    [SCRIPT_FILENAME] => /home/openmdao/webapps/wp_test/index.php 
    [REMOTE_PORT] => 51907 
    [REDIRECT_URL] => /wordpress_NEWURL/cookbook/ 
    [GATEWAY_INTERFACE] => CGI/1.1 
    [SERVER_PROTOCOL] => HTTP/1.0 
    [REQUEST_METHOD] => POST 
    [QUERY_STRING] => 
    [SCRIPT_NAME] => /wordpress_NEWURL/index.php 
    [PHP_SELF] => /wordpress_NEWURL/index.php 
    [REQUEST_TIME] => 1341948361 
    [argv] => Array 
     (
     ) 

    [argc] => 0 
) 

任何这些PARAMATERS的人们可以通过$ _ SERVER [访问'PARAMATER']从你脚本的任何地方。 我希望这有帮助!

+0

嗨,这样一来,我只能够知道我目前的URL(即使是错误的)。但是,我无法确定,这是不是原始网址。 – Rana 2012-07-10 19:31:30

+0

我想我不明白'原始网址'的含义。你的意思是页面的固定链接?因为wordpress将它们存储在数据库中(可以通过插件或主题访问) – dykeag 2012-07-10 19:51:36

+0

嗨,是的,我说的是固定链接。要从数据库访问它,你需要知道帖子ID,对吧?但是当你更早的时候,比如index.php,你不知道。如果你有url字符串,那也是错误的。所以,我决不能直接查询数据库进行检索。另外,我添加了一个示例场景,因为看起来我没有足够清晰。让我知道,如果它现在有道理。 – Rana 2012-07-10 20:06:39