2012-07-13 2 views
0

블로그를 운영하고 실제로 htaccess를 사용하여 URL을 정리해야하지만 실제로 정말 어려움이 있습니다.블로그에 대한 검색 엔진 친숙한 URL을 작성하십시오

예 :

사이트에서 작업, 그리고 검색 엔진 친화적 인 URL을 생성 할 필요가

그래서 현재와 같은 URL이 있습니다

http://mywebsite.com/blog/read.php?art_id=11

이 페이지의 제목입니다 :

왜 호주인들은 자동차에 많은 돈을 지불합니까?

해당 SEF url로 변경해야합니다. 좋아요 :

http://mywebsite.com/blog/Why-do-Australians-pay-so-much-for-Cars-?

물음표는 제목의 일부이며 문제가있는 경우이를 제거 할 수 있습니다. 어떤 제안을 해주시겠습니까?

또한 read.php 부분을 삭제하는 것이 좋습니다. 전체 블로그에서 작동하는 규칙을 만들어야합니다.

이들은 모두 동일한 패턴을 따르고 번호 만 변경됩니다 (art_id).

답변

2

이 매우 유사한 질문에 대한이 답변에서보세요 (당신이 웹 서버로 아파치를 사용하고 있다고 가정하면) : https://stackoverflow.com/a/8030760/851273

여기서 문제는 htaccess로하고 mod_rewrite를 알고하지 않습니다 페이지 이름을 art_id에 매핑하는 방법은 두 가지 방법으로 시도 할 수 있습니다.

  1. 당신은 유사한 조회를 할 수 있도록 read.php에 몇 가지 기능을 추가 할 수 있습니다 대신 art_id, 그것은 art_title 또는 무언가를 사용합니다. 본질적으로 데이터베이스의 백엔드 조회 (또는 기사가 저장된 곳)를 수행하고 ID 대신 키로 제목을 사용해야합니다. 비 ASCII 문자 나 예약 문자 (예 : ?)와 같은 제목에 이상한 문자가있을 수 있기 때문에 약간 지저분합니다. 따라서 데이터베이스에서 제목을 가져올 때나 제목 인코더와 디코더를 만들어야합니다. 제목을 사용하여 데이터베이스에서 기사를 조회합니다.
  2. 서버의 설정 또는 가상 호스트 설정에 액세스 할 수있는 경우, 당신은 설치 RewriteMap using an outside program합니다 (PRG 형) 할 수 있어야하고, 당신을 위해 타이틀에-ID 조회를 수행하는 PHP 스크립트를 만들 수 있습니다. 그럼 당신의 라인을 따라 무언가를 당신의 .htaccess에서 재 작성 규칙을 만들 수 있습니다

    당신은 예쁜 URL에서 기사 제목을 추출하고, 제목 투라는 재 작성지도를 통해 공급된다
    RewriteRule ^blog/(.*)$ /blog/read.php?art_id=${title-to-id:$1} [L] 
    

    id을 사용하여 art_id를 가져옵니다. 다시 말하지만 제목 인코더/디코더를 설정해야 제목에 비 ascci 및 예약 문자가 처리됩니다.http://mywebsite.com/blog/11-Why-do-Australians-pay-so-much-for-Cars을 : 당신이 할 수있는

또 다른 것은 그들이 같이 귀하 꽤 된 URL에서 문서 ID를 충실하는 것입니다. 이것은 여전히 ​​링크가 무엇인지, SEO 친화적인지, 그리고 title-to-ID 조회를 수행 할 필요성을 우회한다는 것을 쉽게 알 수 있습니다. 다시 쓰기 규칙도 똑같이 간단합니다.

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# add whatever other special conditions you need here 

RewriteRule ^blog/([0-9]+)-(.*)$ /blog/read.php?art_id=$1 [L] 

그리고 그게 전부입니다. 물론 블로그 URL을 모두 http://(host)/blog/(art_id)-(art_title) 형식으로 생성해야하며 제목에서 특수 문자를 삭제해야하지만 추가 코드 작성에 대해 걱정할 필요가 없습니다. 제목을 다시 ID로 변환합니다.

+0

고맙습니다. 고맙습니다, 일하지 않습니다. 왜냐하면 제가 마지막 단락을 이해하지 못했기 때문입니다. 하지만 병사가 투표하고 가장 잘 맞는 대답을 선택했습니다. – 422

+0

@ 422 저는 블로그에 대한 링크를 생성 할 때 art_id를 포함 시켜서 http://mywebsite.com/blog/11- 왜 오스트레일리아 사람들이 돈을 많이 쓰는 것일까? –

+0

그래, 내가 다른 것을 바꿔야 할까? 내가 블로그의 htaccess 폴더에 게시물 마지막에 마지막 코드 블록을 추가했기 때문에 아무 것도 변경되지 않았습니다. 나는 생각하고있다. 나는 더 적절한 것을 놓치고있다. – 422