0

SEO 目的で URL の書き換えを実装すると、無限のリダイレクト ループが発生します。

例の URL

`<a><?php echo make_store_name_url($store_id); ?><?php echo $store_name; ?></a>`

動的 URL を書き換える機能があります。以下は例です。

function make_store_name_url($store_id)

{
     //build the keyword rich url
     $url = SITE_URL . '/store/' . $store_id .'/';

    //return the URL
    return $url;
}

//function to redirect using 301
function fix_store_name_url()
{
   $proper_url = get_proper_store_name_url();

   if(SITE_URL . $_SERVER['REQUEST_URI'] != $proper_url)
   {
      header('HTTP/1.1 301 Moved Permanently');
      header('Location: ' . $proper_url);
      exit();
   }
}

function get_proper_store_name_url()
{
  $store_id = $_GET["store"];  
  $proper_url = make_store_name_url($store_id);
  return $proper_url;
}

最後に、書き換える htaccess の私の行。リダイレクトが使用されていない場合、書き換えは正常に機能することに注意してください。

RewriteRule ^store/([0-9]+)/$ /store_selection.php?store=$1 [R=301,L]

無限リダイレクト ループの何が問題なのかわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

1

.htaccess を次のように変更します。

RewriteRule ^store/([0-9]+)/$ /store_selection.php?store=$1 [QSA,L]

これにより、ユーザーには元の URL が表示されたまま、URL が内部的に書き換えられます。301 リダイレクトを実行するように設定していたので、ユーザーがアクセスした URL は /store_selection.php?store=id であり、これが無限ループの原因です。

于 2013-02-10T12:45:09.697 に答える
0

RewriteLog を使用して書き換えルールをデバッグしてみませんか?

# Roll your own Rewrite log
# Log details via scale of 1 to 9
# 1 = few details, 5 = enough details, 9 = too much detail
RewriteEngine On
RewriteLog "/your/path/rewrite.log"
RewriteLogLevel 5

http://perishablepress.com/roll-your-own-apache-rewrite-log/

于 2013-02-10T12:48:09.313 に答える