2014-06-24 157 views
0

我正在一個電子商務網站上工作,我正在努力使其URL更好。我啓用了Apache配置,然後創建了一個.htaccess文件,但我的URL仍然相同。我無法弄清楚我錯在哪裏。動態URL重寫

如果我的網址是這樣的:http://www.public_html/products.php?scatid=72

,我希望它看起來像這樣:http://www.public_html.com/products/scatid/72

我有我的PHP文件:

if($cntrec_prod > 0){ 
    $cnt = 0; 
    mysql_data_seek($srsprod_mst,0);   
    while($srowsprod_mst=mysql_fetch_assoc($srsprod_mst)){ 
     $db_catone_id = $srowsprod_mst['prodcatm_id']; 
     $db_catone_name = $srowsprod_mst['prodcatm_name']; 
     $db_cattwo_id = $srowsprod_mst['prodscatm_id']; 
     $db_cattwo_name = $srowsprod_mst['prodscatm_name'];  
     $db_dys_lft  = $srowsprod_mst['dyslft'];    
     $smlimg_lst  = $srowsprod_mst['prodimgd_simg']; 
     $avl_prd  = $srowsprod_mst['avlprd'];  
     //$lnkname = "products.php?scatid=$db_cattwo_id";   
     $ary_imgnm = explode('--',$smlimg_lst); 
     $img_cnts = ''; 
     $img_frstcnts =''; 
     $imginc = 0; 
     $scatid_lst .= "--".$db_cattwo_id.'-'.$db_dys_lft; 
     for($inc=0;$inc<count($ary_imgnm);$inc++){      
      $scat_imgnm  = $ary_imgnm[$inc]; 
      $scat_imgpth  = $u_sml_upldpth.$scat_imgnm;     
      if(($scat_imgnm != '') && file_exists($scat_imgpth)){ 
       $imginC++; 
       if($inc == 0){ 
        $img_frstcnts = "<a href='products.php?scatid=$db_cattwo_id' class='catImg'><img src='$scat_imgpth' width='300' height='350' border='0' alt=''></a>"; 
       } 
       $img_cnts = "<a href='products.php?scatid=$db_cattwo_id'><img src='$scat_imgpth' width='300' height='350' /></a>";      
      } 
      else{ 
       $img_frstcnts = "<a href='products.php?scatid=$db_cattwo_id' class='catImg'><img src='images/noimage.jpg' width='300' height='350' border='0' alt=''></a>"; 
      } 
     }      
     $dsp_name = $db_cattwo_name;    
?> 

我的.htaccess文件包含以下代碼:

RewriteEngine on 
RewriteBase /public_html/ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 
RewriteRule products/scatid/(.*)/ products.php?scatid=$1 [L,QSA] 
RewriteRule products/scatid/(.*) products.php?scatid=$1 [L,QSA]` 
+0

'\ $'是錯誤的,你都逃脫'$'符號,而不是做'/? $' –

+0

。一切的htaccess不是最好的方法。考慮使用**路由器**或自行編程。 – Xatenev

+0

試過這個改變,你仍然要求URL一致。感謝您的建議@Rahil ny其他建議也將是hlpful – Priyanka

回答

0

您需要移除這COND的最後一個實例:

RewriteCond %{REQUEST_FILENAME}\.php -f 

這COND阻止你獲得的重寫規則,因爲如果網址不被改寫的COND無法滿足。 您還需要改變最後重寫規則如下:

RewriteRule ^sub-products/([0-9]+)$ sub-products?catid=$1 [NC,L] 
+0

不,它不工作。 @ clami219 – Priyanka

+0

你是對的!這是因爲RewriteCond ...我編輯瞭解決問題的答案 – clami219

0

RewriteEngine敘述在 RewriteBase/

#add these 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule (.*) /$1/ [R,L] 

RewriteCond %{HTTP_HOST} !^example.nl$ [NC] 
RewriteRule ^(.*)$ http://example.nl/$1 [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
+0

我是否需要更改php文件中的href標籤? @Ajay – Priyanka

+0

不,你不需要。 –