2013-05-16 2 views
0

내가예쁜 URL을

function url($string) { 
    //lower case everything 
    $string = strtolower($string); 

    //make alphaunermic 
    $string = trim($string); 

    //Clean multiple dashes or whitespaces 
    $string = preg_replace("/[\s-]+/", " ", $string); 

    //Convert whitespaces and underscore to dash 
    $string = preg_replace("/[\s_]/", "-", $string); 

    return $string; 
} 

//some artist now becomes some-artist, some song now becomes some-song 

를 대시 내 변수의 모든 공간을 변경하는 몇 가지 코드를 가지고 그리고 난 규칙을

같은

RewriteRule ^mp3/(.*)-(.*)/?.html$ mp3.php?artist=$1&song=$2 [nc] 

그래서 내가 할 수 URL이

www.example.com/mp3/some-artist-some-song.html 

하지만 아티스트가 노래와 분리되는 부분이 섞여 있습니다. 그 페이지에서 아티스트를 반향 시키면 "some-artist- 일부 "실제 아티스트 변수가"일부 아티스트 "일 때 첫 번째 변수가 마지막 대시 이전의 모든 것이 아니라고 생각하는 것 같습니다. 어떻게 해결할 수 있습니까?

+4

어떻게 인간을 * 수정 했습니까?! 아티스트는 "some"이고 노래는 "artist-some-song"입니까? 아니면 아티스트 "some-artist-some"과 노래 "song"입니까? 명명 체계가 모호하다면 할 수있는 일은 거의 없습니다. – deceze

+2

나는 www.example.com/mp3/some-artist/some-song.mp3을 더 잘 사용한다. – Voitcus

+0

나는 mutiple 변수를 가진 모든 대쉬를 가지고있는 다른 사이트를 보았으므로 그것을 할 방법이 있어야한다. – Bren

답변

2

1 개의 너무 많은 것을 위해 대시를 사용하고있는 것처럼 보입니다. 여전히

당신은 공간 대체 및 경계 구분자로 사용하지 못할 및 some-artist-some : song

some-artist : some-song 사이 다른 사이트는 데이터를 얻을까지 URL을 분할되지 않을 차이를 구별 할 수있을 것으로 기대 실제로는 어떤 예술가 - 어떤 노래의 URL을 사용하여 artist: some artistsong: some song의 속성을 갖는 하나의 특정 항목을 나타냅니다.

URL을 분할해야하는 경우 대답은 공백을 바꾸는 것보다 아티스트와 노래 사이에 다른 문자를 사용하는 것입니다. 실제로 이것은 각 트랙에 고유 한 URL에 대해 데이터베이스에 여분의 열을 추가 할 때까지 항상 문제가 발생합니다.

mysqite.com/some-artist-some-song에 대한 요청이 들어 오면 URL 열 아래에서 데이터베이스에서 일부 아티스트의 노래를 찾아보십시오. 이렇게하면 올바른 트랙이 제공되며 URL이 고유 한 경우 노래 제목과 아티스트의 조합이 중요하지 않습니다.

EG.

+------------------+------------------+------------------------+ 
| artist   | title   | url     | 
+------------------+------------------+------------------------+ 
| Some Artist  | Some Song  | some-artist-some-song | 
| Some Artist Some | Song    | some-artist-some-song2 | 
| Some    | Artist Some Song | some-artist-some-song3 | 
+------------------+------------------+------------------------+ 

이제 어떤 아티스트의 가능한 조합을 사용자가 요청한 노래를 고유하게 식별 할 수 있습니다. 사용

+0

데이터베이스의 아티스트와 노래는 두 개의 분리 된 열로 만 묶어서 하나의 열에 병합하면 테두리를 편집하고 전체 아티스트와 노래 일 수있는 하나의 변수를 사용할 수 있습니까? – Bren

+1

각 노래를 참조 할 수있는 단일 고유 URL이 포함 된 URL에 대한 추가 열을 추가하십시오. – Anigel

1

봅니다 :

RewriteRule ^mp3/(.*)_(.*)/?.html$ mp3.php?artist=$1&song=$2 [nc] 

이렇게하면 http://yourdomain.com/mp3/some-artist_some-song/을 가질 수 있습니다. 나는 이것이 SEO 조건에서 some-artist/some-song과 어떻게 비교되는지 모르겠습니다. 어느 쪽이든, 대시를 사용하여 공백을 대체하거나 분리 기호로 사용할 수 없습니다.

관련 문제