在为SEO目的实现URLS的重写时,我得到了一个无限的重定向循环。
示例网址
`<a><?php echo make_store_name_url($store_id); ?><?php echo $store_name; ?></a>`
我有一个重写动态网址的功能 - 下面是一个例子
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]
不确定我的无限重定向循环出了什么问题。任何帮助将不胜感激。
答案 0 :(得分:1)
将.htaccess更改为:
RewriteRule ^store/([0-9]+)/$ /store_selection.php?store=$1 [QSA,L]
这只是在用户仍然显示原始内容时在内部重写URL。您已将其设置为执行301重定向,因此用户正在访问的URL是/store_selection.php?store=id,这是无限循环的原因。
答案 1 :(得分: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/