2

规格 :

  1. 语言:PHP
  2. 数据库:MYSQL
  3. 网站类型:动态
  4. .htaccess 使用:高
  5. 启用 Apache 模块:mod_rewrite 和 mod_spelling

重写代码:

RewriteRule ^(.+)-(.+)~(.+)\.html$ gallery-model.php?gallnm=$1&newnm=$2&modelid=$3

有2个问题需要解决,

1. URL 重复问题 2. URL 中追加查询字符串

问题 #1:URL 重复问题

根据 SEO-MOZ 报告,有两个不同的 URL 具有相同的内容。例如,

URL 结构:http ://www.example.co.uk/galleryname-modelname~modelid.html

网址 1:http ://www.example.co.uk/Shoes-Blackmamba~23.html

网址 2:http ://www.example.co.uk/shoes-blackmamba~23.html

请注意,URL 1 具有驼峰式文本,而 URL 2 具有小写文本。

Gallery-model.php 文件将 100 条记录存储在 MYSQL 数据库中,以使其显示在上述 URL #1 和 #2 中。

注意(S):

  1. 解析查询字符串合理的变量都使用'strtolower'。双重检查并确认。
  2. 如果您检查上面的REWRITE CODE,您可以在最后看到 [nc]。如果我尝试操作,它会返回 500 内部服务器错误。

如何阻止具有相同内容但不同 URL 的 URL 重复?

ISSUE #2:查询字符串附加在 URL 中

请检查REWRITE CODE它具有将 URL 重写为 SEF 的功能。一些 URL 工作正常,但其余的附加查询字符串。例如,

http://www.example.co.uk/shoes-blackmamba~23.html?gallnm=Shoes&newnm=Blackmamba&modelid=23

注意(S):

  1. 如果您检查上面的 URL,您可以在查询字符串中找到驼峰式。

  2. 正在应用REWRITE CODE ,因此它不应在“URL?”之后附加变量名称和当前值。但确实如此。

  3. 正在使用 trim() 并且没有应用 mysql 大小写更改。

如何消除此查询字符串?

针对问题 #1 和 #2 的尝试解决方案:

  1. mod_spelling.c 已启用,但它返回 500 内部服务器错误。
  2. 几次谷歌搜索后,强制 URL 小写。

我期待着您的回复。

4

1 回答 1

1

步骤: 1. 获取当前网址。2. Preg_match for "?" 3. 用“?”展开 4. 重定向到爆炸数组[0]。

代码如下:

//Force all lower case - begins

//Step 1 : To get current URL
function curPageURL() {
 $pageURL = 'http';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}

//Step : 2
if (preg_match('/?/',$camel)) {
        $expurl = (explode("?",$camel)); //Step 3 : Explode with "?"
        header("Location: $expurl[0]"); //Step 4 : Redirect to exploded array[0].
    }
于 2013-03-25T11:57:19.853 回答