2012-02-12 2 views
1

더 나은 URL을 위해 .htaccess mod_rewrite을 사용하고 있습니다. 여기 .htaccess mod_rewrite 및 후행 슬래시와 관련된 문제를 해결하는 방법

/artists.php?culture=arabic /artists/arabic로, /artist/123456/artist.php?id=123456 변 내 htaccess로 파일의 일부이며, .PHP 제거합니다

RewriteRule ^artist/([0-9]+) artist.php?id=$1 
RewriteRule ^artists/(.+) artists.php?culture=$1 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

그것은 작동을하지만 난 뒤에 넣으면 끝에서 / 슬래시 /artist/arabic/과 같이 404 오류가 발생합니다. 이 문제를 어떻게 해결할 수 있습니까? 후행 슬래시를 제거하는 것만으로도 효과가있을 수 있지만이 작업을 수행하는 방법을 모르겠습니다. 사용자가 우연히 / 또는 그 외의 것을 추가하고 페이지가 존재하지 않는다고 혼란스러워하도록하고 싶지 않습니다.

미리 감사드립니다.

답변

3

당신은 단지 /?

# Optional trailing slash... 
RewriteRule ^artist/([0-9]+)/? artist.php?id=$1 
#--------------------------^^^^ 
RewriteRule ^artists/(.+) artists.php?culture=$1 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
+0

감사와 함께 첫 번째 규칙에 선택적 후행 슬래시를 추가해야합니다, 그것은 작동합니다. 그리고 놀랍게도 그것은 다른 디렉토리의 .htaccess 파일에서 작동합니다 (선택적/실제로 규칙을 넣지 않고 추가했습니다 ... 첫 번째 규칙에 넣을 때 작동하는 방법은 무엇입니까?) – Nathan

+0

아, 그 때문입니다. [L] 플래그가 꺼져서 다음 일치로 넘어갑니다. 당신은 보통 그것을 원하지 않을 것이고, 나는 실수로 그것을 제 대답에서 제외 시켰습니다. –