我有一个属性网站,其中已经上传了很多属性,目前属性的网址看起来像这样
http://propertyonline.com.ng/property.php?product_id=255
但是为了谷歌优化,我知道它不应该像这样,所以我尝试将我的网址重写为像网站标题一样干净的东西。
所以而不是像
http://propertyonline.com.ng/property.php?product_id=255
我们将
http://propertyonline.com.ng/3 Bedroom Flat Large Compound On Banana Island Ikoyi
我有一个变量,当前在此页面上根据上述属性的id动态回显属性的标题
<?php echo $row_prop['title']; ?>
请问如何使用htaccess
动态重写网址感谢
答案 0 :(得分:1)
您可以将网址格式化为:
http://propertyonline.com.ng/{product_id}-{product_slug}
{product_id}
是数值,{product_slug}
可以是任意字符串,后跟产品ID。然后你可以使用这个RewriteRule
。 $1
是对分组部分([0-9]+)
的反向引用,代表{product_id}
。 [^/]*
匹配除正斜杠字符之外的任何字符串,表示为{product_slug}
。
RewriteRule ^([0-9]+)-[^/]* /property.php?product_id=$1 [QSA,L]
答案 1 :(得分:0)
如果你想要干净的网址使用产品slug 对于slug使用下面的代码将删除字符串
中的空格和不需要的字符function to_prety_url($str)
{
if($str !== mb_convert_encoding( mb_convert_encoding($str, 'UTF-32', 'UTF-8'), 'UTF-8', 'UTF-32') )
$str = mb_convert_encoding($str, 'UTF-8', mb_detect_encoding($str));
$str = htmlentities($str, ENT_NOQUOTES, 'UTF-8');
$str = preg_replace('`&([a-z]{1,2})(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i', '\1', $str);
$str = html_entity_decode($str, ENT_NOQUOTES, 'UTF-8');
$str = preg_replace(array('`[^a-z0-9]`i','`[-]+`'), '-', $str);
$str = strtolower( trim($str, '-') );
return $str;
}
更改.htaccess代码(或添加)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/$ index.php [L]
#this is for product section
RewriteRule ^property/([A-Za-z0-9-]+)/?$ property.php?slug=$1 [NC,L]
ErrorDocument 404 http://www.akshadainfosystem.com/
RewriteRule ^([^\.]+)$ $1.php [NC,L]