2

wordpress は、URL を元の URL に厳密に一致させてリダイレクトすることを知っています。ただし、コード実行の最初の段階で実際の URL を知る必要があります。出来ますか?

1) パラメータとして url を取り、元の wordpress url を返すメソッドがある場合、それは素晴らしいことですが、存在するかどうかはわかりません。そのようなものはありますか?

2) コードのどこで実際にこのテストとリダイレクトを行っていますか?

3) この状況を制御するプラグインを追加するために使用できるフックはありますか?

前もって感謝します。

例:

「http://mydomain.com/example-post-page」という URL に投稿があるとします。

「http://mydomain.com/example-post-page/」経由でアクセスしようとすると、元の最初の URL にリダイレクトされます。URL の他のいくつかの小さな変更にも当てはまり、すべてが実際のパーマリンク URL にリダイレクトされます。

私の目標は、このリダイレクトを制御することです。だからこそ、私が "http://mydomain.com/example-post-page/" にいるとき、これが元のパーマリンクなのか、それとも別のものなのか (ルート index.php の私のコード) を知りたいのです。リダイレクトする前に。

4

3 に答える 3

2

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
)

これらのパラメーターのいずれかは、スクリプトのどこからでも $_SERVER['PARAMATER'] によってアクセスできます。これがお役に立てば幸いです。

于 2012-07-10T19:25:30.780 に答える
0

わかりました、ついに私は次の方法でそれを成し遂げました、そして私にとっては大丈夫です:

1) おおよその URL を受け取ります。2) このおおよその URL を使用して cURL リクエストを作成します。3) 応答 URL を取得します。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;
}}
于 2012-07-14T19:24:45.967 に答える
0

the_permalink のことですか? http://codex.wordpress.org/Function_Reference/the_permalink

于 2012-07-10T20:07:18.990 に答える