2010-01-24 13 views
1

나는 PHP 스크립트를 가진 클라이언트의 웹 사이트가 최근에 구입 및 스크립트에 대한 지원이 감상적이다, 나는 검색 엔진 친화적으로 스크립트의 영구 링크를 원하지만 그들은 아니에요 만들었습니다. 그들은PHP Permalinks .. 어떻게 바꿀 수 있습니까?

그래서, 내가 어떻게 영구 링크를 변경할 수 있습니다 .. inbetween 공간이 전혀 검색 엔진에 의해 인덱싱되지 않습니다 있나요? 여러분 모두 감사합니다 ..

+0

구입 한 스크립트에 이름이 있습니까? 여기에있는 개발자 중 일부가 살펴볼 수 있다면 소스에서 변경해야 할 부분을 더 잘 알려줄 수 있습니다. – MidnightLightning

답변

0

urlencode 기능은 URL의 공간을 돌볼 것입니다. 예를 들어

는 :

<?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>"; 
?> 

이 검색 엔진에 잘되어야 링크 http://example.com/some+thing/Name+of+an+item/을 만들 것입니다.

URL 재 작성 (예 : mod_rewrite)을 사용한다고 가정하면 값은 urlencode 함수 이전의 PHP 스크립트에 도달해야합니다. 그렇지 않은 경우 urldecode으로 되돌릴 수 있습니다. 당신이 50 개 PHP 파일이 "스크립트"함께 htaccess로 파일을 가지고 있다면

+0

안녕 Atli, 나를 도와 주셔서 고마워. 나는 그것을 많이 고맙다. 나는 파일에 들어가서 내 PHP 스크립트에서 'urlencode'에 대한 검색을 만들었습니다. 그 중 몇 개를 발견했습니다. 이 코드를 위의 코드로 바꾸시겠습니까? 나는 사회자가 공개 링크를 허용하지 않는다고 생각합니다. === // 일치하는 PHP 코드를 함수로 변환하십시오. $ _include_compiled = " _ version. ",".strftime ("% Y- % m - % d % H : % M : % S ")."\ n "; $ _include_compiled. = "에서 컴파일". strtr (urlencode ($ params [ 'resource_name']), 배열 ('% 2F'=> '/', '% 3A'=> ':')). "*/\ n \ n"; – regguy

+0

게시 한 코드의 비트가 찾고있는 'urlencode'의 올바른 인스턴스가 아닌 것 같습니다 (Smarty 템플릿 엔진의 독창적 인 해석 인 것처럼 보이지만). 다른 사건은 없습니까? – MidnightLightning

+0

스크립트의 클라이언트 영역을 확인하고 최신 버전을 받았습니다. 새 버전에는 SQL을 업데이트하고 일부 코드를 바꿀 지침이있는 read me 파일이있었습니다. 이제 permalinks 구조는 다음과 같습니다. http://Domainname.com/Arts-Humanities/how-are-you-doing?-|4 질문 끝에 추가 된 "- | 4"가 신뢰할 수 있고 친숙한 지 잘 모르겠습니다. 검색 엔진. 그것에 관한 어떤 생각? 다시 한 번 감사드립니다. – regguy

1

, 당신은 가능성이 먼저 흐르는 프로그래밍 경로를 찾을해야합니다. .htaccess 파일을 살펴보면 PHP 파일 이름으로 끝나야하는 ModRewrite 행이 나타납니다. 그것이 퍼머 링크를 수신 (및 디코딩)하는 스크립트입니다. 그 파일은 퍼머 링크 구조를 재 작성하기위한 훅을 찾기 시작할 수있는 좋은 장소입니다. 해당 파일에 소스 코드를 게시하거나 (pastebin 같은 위치에두고 링크를 게시 할 수 있다면) 한 번 살펴 보니 기쁩니다.

는 다른 의견 중 하나에서 그것은 Smarty PHP 템플릿 엔진을 사용하는 스크립트의 적어도 일부처럼 들린다. 그렇다면 "캐시", "템플릿"및 "templates_c"폴더 (또는 이와 유사한)가 포함 된 폴더를 찾을 수 있으면 해당 폴더도 제외시킬 수 있습니다. 이는 페이지를 표시하는 데 사용되는 템플릿이되며 디코드/인코딩 스크립트는 표시되지 않습니다.

편집 :은 htaccess로 파일을 보면, 29 행은 문서 영구 링크를 다루는 일 하나에 보이는, 그리고 view.php를 가리키는 및 idtitle GET 변수로 퍼머 무엇 변환합니다. 가능하다면 view.php의 출처를 게시하면 거기에서부터 갈 것입니다.

편집 2 좋아요, view.php을 보면 좀 더 통찰력을 얻었습니다. 주로 디코딩 기능이 없다는 것입니다. Answerscript 엔진은 permalink의 'title'부분을 즉시 버리고 URL 쿼리의 파이프 다음에 오는 ID만으로 질문을 조회합니다 (URL의 제목 부분을 다른 것으로 변경하여 데모 페이지에서이를 입증 할 수 있음) 그렇지 않으면 여전히 올바른 페이지를 가져옵니다). 따라서 좋은 소식은 인코딩 기능을 변경할 때 업데이트해야 할 디코딩 기능이 없다는 것입니다. 불행하게도 이것은 인코딩 기능이 스크립트에서 어디에 있는지 알려주는 것입니다.

유일한 힌트는 view.php 파일이 나는 염치는 does_post_exist($PID), update_last_viewed($PID), update_your_viewed($USERID)update_viewcount_question($PID)에 대한 기능 정의를 가지고있어 include/functions/import.php라는 파일이 포함되어 있다는 것입니다. 가져 오기에 사용될 다른 함수가 있는지 파일의 소스를 보자. 또한 include/functions/ 폴더에 몇 개의 파일이 있습니까? 몇 개만있는 경우 모든 출처를 게시하십시오. 인코딩 기능이 거기에 정의되어있을 가능성이 있습니다. 묶음이있는 경우 해당 폴더에 파일이 있습니까 (즉, view.php에 의해 사용 된 import.php의 반대쪽)?파일의 소스는 인코딩 기능을 가지고있을 가능성이 있기 때문에 게시하십시오.

EDIT 3이 있습니다 그들은 다음과 같습니다 seo_clean_titles, insert_seo_clean_titlesseo_clean_titles2 다음 main.php 파일에서 함수의 트리오가있다. insert_seo_clean_titles은 Smarty 템플릿에서 호출되는 함수로 확장자를 가진 모든 파일을 검색하여 {insert name="seo_clean_titles"의 위치를 ​​확인하고 seo_clean_titlesseo_clean_titles2의 차이는 첫 번째 echo이 결과를 제외하고 두 번째 return입니다. 그러나이 세 줄에는 모두 $title = str_replace(" ", "-", $title); 줄이있어 제목의 모든 공백을 하이픈으로 바꾸어야합니다. 그 결과를 보지 못한다면 코드가 올바른 위치에서 이러한 함수를 호출하지 않을 가능성이 있습니다. .php 개의 파일을 모두 검색하여 seo_clean_titles 또는 seo_clean_titles2으로 전화가 걸려 있는지 확인하고 결과가 실제로 최종 도착 URL로 사용되는지 확인하십시오. 여기에 질문 페이지로 연결 템플릿 파일의 라인이다 : 편집 4이 모든 URL의 끝에 ".html 중에서"를 추가하려면

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

변경 것과 :

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

이고 링크의 끝에 ".html"이 표시됩니다. 그런 다음 ID 번호를 구문 분석 할 때 떨어져 다시 다시 "들이게된다"스트립 view.php을 수정해야합니다 : 오른쪽 $pid = intval($ph);하기 전에 다음 삽입 : 그것을

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

해야한다고!

+0

안녕하세요, 간단한 설명에 대해 감사드립니다. 나는 preg_replace (19 개의 파일들 (전 글로벌 검색을 했음))와 htaccess 파일 http : //php.pastebin을 업로드했습니다.com/m4dcdf8e4보세요. 스크립트는 ask answers PHP 스크립트 인 'answerscript'입니다. 그러나 데모는 현재 작동중인 permalink로 업데이트됩니다. 이 스크립트는 구입시 퍼머 링크 구조가 작동하지 않습니다. 제가 말했듯이, 지원은 업데이트에 신경 쓰지 않습니다. 그리고 Smarty_Compiler.class, Smarty.class와 같은 libs 파일이있는 스마트 폴더 (엔진이라고 생각합니다)가 있습니다. 고마워요! – regguy

+0

"Answerscript"입니까? http://www.answerscript.com/? 예, Answerscript 엔진 안에 전체 Smarty 엔진이 포함 된 것처럼 들립니다. permalink 구조를 고치려고 시도하는 동안 전체 "멋진"폴더를 무시할 수 있습니다. 이는 페이지의 마지막 디스플레이 만 처리하기 때문입니다. '.htaccess' 파일에서 수집 한 것에 대한 위의 편집을보십시오. – MidnightLightning

+0

@ MidnightLightning - 감사합니다. 진지하게, 당신은 훌륭했습니다. view.php 콘텐츠 파일을 찾았으며 여기에 붙여 넣었습니다. http://pastebin.com/m6dc7b983 아니요. URL의 마지막에 자동/명백한가? 이 형태의 퍼머 링크는 http://www.sawaal.ibibo.com/을 만들 수 있습니다. 끝에는 .html이라는 태그가 붙어 있습니다. 사이트의 검색 순위는 매우 높습니다. 매우 많은 것들을 묻는 것에 대해 유감스럽게 생각하며, permalinks 수정에 도움을 주시고 도움을 청했습니다. 많이 감사합니다 .. !! – regguy

관련 문제