2011-06-21 43 views
1

考虑一个URL如何用post标题slug重写url?

www.example.com/paper-ads-details.php?req=43397&rnd=1308546000 

我想改变这个网址为:

www.example.com/jobs-in-chanai.php 

其中req=43397指向标题为chanai 工作后我怎么可能会改写呢?请帮帮我。

+1

为什么要在友好的网址中使用'.php'?除此之外,你真的**希望将页面ID包含在友好的url中,所以你不必让代码效率低下(通过slug搜索)。 – ThiefMaster

+0

感染我想隐藏参数,并希望使用像wordpress的slu。。 –

+2

为什么不包括两个,例如 'example.com/43397-jobs-in-chanai' – ThiefMaster

回答

1

经过艰苦的时间,我得到的方式,现在分享它为其他用户... 假设所需的Url为www.example.com/programmer-Jobs-in-luton
该规则将像...
RewriteRule ^([a-zA-Z0-9-]+)$ job-details.php?slug=$1 [L]

1
  1. 如果你想使用的.htaccess,你需要编写一个脚本来静态生成重写规则,所以.htaccess文件包含像
    RewriteRule ^jobs-in-chanai.php /paper-ads-details.php?req=43397&rnds=1308546000 [L]

  2. 线在开始处理路由PHP中的请求。根据slug而不是req和rnds参数解析(并过滤)url以查找帖子。根据需要缓存结果。

1

在你的数据库中,你需要一个'clean url'或'slug'的列以及提到的.htaccess规则。

我使用此功能(不是我的代码):

function makeSlug($string, $force_lowercase = true, $anal = false) { 
    $strip = array("~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "=", "+", "[", "{", "]", 
        "}", "\\", "|", ";", ":", "\"", "'", "‘", "’", "“", "”", "–", "—", 
        "—", "–", ",", "<", ".", ">", "/", "?"); 
    $clean = trim(str_replace($strip, "", strip_tags($string))); 
    $clean = preg_replace('/\s+/', "-", $clean); 
    $clean = ($anal) ? preg_replace("/[^a-zA-Z0-9]/", "", $clean) : $clean ; 
    return ($force_lowercase) ? 
     (function_exists('mb_strtolower')) ? 
      mb_strtolower($clean, 'UTF-8') : 
      strtolower($clean) : 
     $clean; 

} 

我把它保存在一列,这样做:

"SELECT * FROM `content` WHERE `clean_url` = '" . mysql_real_escape_string($cleanURL) . "'"; 
+0

slu is已经可用。如何使用htaccess在网址中进行调整。 –

+0

'$ str = iconv('UTF-8','ASCII // TRANSLIT',$ str);''''''''可以清除特殊字符,比如元音变音。除此之外,为什么你的makeSlug函数中有html实体? PHP不会将它们解析为字符.. – ThiefMaster

+0

@blackDelta良好的工作伙计 – pregmatch