Adresler yeniden ne zaman href niteliklerini yeniden önlemek nasıl?

3 Cevap php

benim web sitesinde i (sadece exemple) den URL değiştirmek istiyorsanız:

site.com/showCategory.php?catId=34

için:

site.com/category/34/

. İşte benim htaccess dosyasının içeriği olan:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^affichage/([0-9]+)$ /affichage/$1/ [R]
    RewriteRule ^affichage/([0-9]+)/$ /affichage.php?n=$1
</IfModule>

Bu çalışır, ama sorun affichage.php "/ affichage/29 /" var ve css dosyası için kaynak olur http://www.site.com/category/34/css/style.css tüm adresler (href tag) 'dir.

3 Cevap

Ben css ve ben doğrudan erişmek istediğiniz diğer dosyaları dışlamak için bu ekleyin:

RewriteCond  %{REQUEST_FILENAME} !\.(php|ico|png|jpg|gif|css|js|gz|html?)(\W.*)?

Ya da, dizin adıyla dışlamak için:

RewriteCond  %{REQUEST_FILENAME} !^/(css|js|static|images)(/.*)

Yine URL'sini yazmak zorunda olacak. Ancak iyi uygulama bir fonksiyonu ile sarılmasıdır.

örneğin:

<a href="<?php rewritefunc('affichage.php',array('n'=>29)); ?>">This URL</a>
<?php
  $do_rewrite = true;

  function rewritefunc($file,$params){
    $ret = '';
    switch(strtolower($file)){
      case 'affichage.php': 
        if($do_rewrite){
          $ret = 'affichage/'.$params['n'].'/';
        }else{
          $ret = 'affichage.php?'.http_build_query($params);
        }
    }
    return $ret;
  }
?>

Switch deyimi kullanarak daha fazla url ayrıştırma ekleyebilirsiniz. Ayrıca bu sarıcı işlevi ile, kolayca eski ve yeni URL'ler arasında geçiş yapabilirsiniz.

Bu bir URL çözme konudur. Eğer dış kaynaklara başvururken mutlak URL'ler (ya da en azından mutlak URL yolları) kullanmanız gerekir. Bunun yerine göreceli css/… ya da ./css/… mutlak URL yolu /css/… kullanın.

Yoksa göreli URL'ler BASE HTML elemanı . But note that that will affect all göreli URL'ler ile gelen çözümlenir temel URL'yi değiştirin.

http://stackoverflow.com/questions/938997/problem-using-url-rewrite-relative-paths-not-working/940178#940178 ve http://stackoverflow.com/questions/891775/modrewrite-url-info-required/891785#891785 Ayrıca bkz.