PHP Permalinkler .. değiştirmek nasıl?

3 Cevap

Ben php script son satın alınan ve komut dosyası için destek Senaryonun permalinks arama motoru dostu olmak istiyorum ama onlar değil, acıklı bir müşteri web sitesi kurdu. Onlar hiç arama motoru tarafından endeksli değil ki, araya boşluk var ..

Yani, nasıl kalıcı bağlantı değiştirebilirim? Hepinize teşekkür ederim ..

3 Cevap

50 PHP dosyaları ve bu "script" ile gelen bir. Htaccess dosyası var ise, büyük olasılıkla ilk onlara akar programlama yolunu bulmak gerekecek. Eğer. Htaccess dosyasına bir göz atacak olursak, bir PHP dosyası adı ile bitirmesi gereken bazı ModRewrite satırları görmelisiniz. Yani kalıcı bağlantıları alıcı (ve çözme) bulunuyor senaryo. Bu dosya kalıcı yapısı yeniden yazmak için bir kanca için aramaya başlamak için iyi bir yer olurdu. Eğer kaynak kodu gönderirken (veya bir yerde pastebin gibi koymak ve bağlantı sonrası) bu dosya için olsaydı, ben bir göz atın mutluluk duyarım.

Diğer yorumlar birinden bu komut en azından bir parçası gibi Smarty PHP şablon motoru kullanıyor geliyor. Eğer öyleyse "cache", "şablonlar", ve "templates_c" klasörleri (veya benzeri) içeren bir klasör bulabilirsiniz eğer, siz de o birini ekarte edebilirsiniz; bu sayfayı göstermek için kullanılan şablonlar değil, decode / kodlamak komut herhangi olacaktır.

EDIT: senin. Htaccess dosyasına baktığımızda, satır 29 makale kalıcı bağlantılarınız ile uğraşan edilecek birine bakar ve bu view.php işaret ve {[(2 içine permalink ne dönüştürür )]} ve title değişkenleri GET. Sen, ve biz oradan gideriz eğer view.php kaynağını gönderebilir.

EDIT 2 Tamam, view.php bakarak biraz daha fikir kazandı. Öncelikle hangi hiçbir çözme işlevi olmasıdır; Answerscript motor derhal permalink bir 'title' kısmını atar ve sadece kimliği tarafından bir soru URL sorgusu boru aşağıdaki (sayı kadar görünüyor, siz bir şey URL başlık kısmını değiştirerek kendi demo sayfasında bu kanıtlayabilirim Başka, ve hala) sağ sayfayı almak olacaktır. Yani, iyi haber kodlama işlevini değiştirmek güncelleştirilmesi gereken hiçbir çözme işlevi var olmasıdır. Ne yazık ki bu şifreleme işlevi komut nerede olduğunu bize anlatmak için çok az şey yapar.

Sadece ipucu view.php dosya Ben küstah include/functions/import.php adlı bir dosya içerir ki does_post_exist($PID), update_last_viewed($PID) için fonksiyon tanımları var , update_your_viewed($USERID) ve update_viewcount_question($PID). En ithal için kullanılan olurdu orada başka işlevleri varsa bu dosyanın kaynağı görmek için görelim. Ayrıca, kaç dosya include/functions/ klasörde? Sadece birkaç varsa, bütün kaynaklarını yayınlamak; olası kodlama fonksiyonu vardır tanımlanır. Bir demet varsa, (tersi, yani import.php view.php tarafından kullanılan) bu klasörde bir export.php dosyası var mı? Büyük olasılıkla kodlama işlevi olduğu gibi bu dosyanın kaynağını gönderebilir.

main.php orada fonksiyonları bir üçlü var dosyası: EDIT 3 İşte oradalar, insert_seo_clean_titles seo_clean_titles, ve {[(4)] }. insert_seo_clean_titles Smarty şablon içinde çağrılacak bir işlev (yani kullanılan nerede {insert name="seo_clean_titles" görmek için bir .tpl uzantısına sahip tüm dosyaları aramak), ve seo_clean_titles ve seo_clean_titles2 arasındaki fark, ikinci return bu s iken ilk echo, sonucunu es olmasıdır. Ancak, her üç tire için başlık tüm boşlukları dönüm olmalıdır hattını $title = str_replace(" ", "-", $title);, var. Eğer bu sonucu görmüyorsanız, büyük olasılıkla kod doğru yerlerde bu işlevleri çağırarak değil. Tüm .php dosyaları arama ve başka bir yerde seo_clean_titles veya seo_clean_titles2 bir çağrı olmadığını görmek ve emin sonuç gerçekte olarak kullanılan yapabilirsiniz son URL.

Edit 4 tüm URL'lerin sonuna ". Html" eklemek için: Burada soru sayfaya bağlantı şablon dosyasında çizgi:

<a href="{$baseurl}/{$ques[i].seo}/{$title}|{$ques[i].PID}">{$ques[i].title|stripslashes}</a>

O değiştirin:

<a href="{$baseurl}/{$ques[i].seo}/{$title}|{$ques[i].PID}.html">{$ques[i].title|stripslashes}</a>

ve bağlantıları ucunda. "html" olacak. Önce sağ $pid = intval($ph);, aşağıdaki yerleştirin: Daha sonra kimlik numarasını ayrıştırma zaman tekrar kapalı view.php ". Html" şerit değiştirmeniz gerekir:

if (strtolower(substr($pid, -5)) == ".html") $pid = substr($pid,0,-5); // Remove ".html" if it exists

İşte bunu yapmalıyım!

urlencode function URL boşluklar dikkat çekmek istiyorum.

Örneğin:

<?php
$base_url = 'http://example.com';
$category = urlencode('some thing');
$item     = urlencode('Name of an item');

echo "<a href=\"{$base_url}/{$category}/{$item}/>{$item}</a>";
?>

Bu bir arama motoru ile ince olmalıdır link http://example.com/some+thing/Name+of+an+item/ olur.

Onlar urlencode fonksiyonu önce olduğu gibi, sen (mod_rewrite gibi) yeniden URL kullanarak varsayarak, değerler PHP komut ulaşmalıdır. Değilse, urldecode ile geri dönebilirsiniz.

Bu pasajı bir dize alır ve onların ASCII equivelents içine tire ve ASCII olmayan harfler içine tüm boşluk dönüştürür:

<?php
    $url = "http://example.com/";
    $string = "This is a test slug";
    $permalink = $url . strtolower(trim(preg_replace(array('~[^0-9a-z]~i', '~-+~'), '-', preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES))), '-'));

    echo $permalink; // "http://example.com/this-is-a-test-slug"
?>

this SO thread Daha fazla örnek için bkz.