2013-02-08 2 views
1

내 데이터베이스에 범주 이름이 있으며 테마 중 일부는 é è ê와 같은 프랑스어 문자가 있습니다. 당신이 볼 수 있듯이다시 쓰기 규칙이있는 프랑스어 문자

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^([A-Za-z0-9éèêà_-\s]+)-(\d+)\.htm$ classified.php?id=$2 [L] 

는, 그것이없이 잘 작동 : 오늘까지 원하는대로 내가 할 수있는 다른 문자를 추가하려고 할 때 그때가 서버 오류 다음

을 받기 시작 그것은 작동 제의 .htaccess입니다 에이.

어떻게 그 것을 정규식에 추가합니까?

+0

확인이 : [htaccess로 모을 \ _rewrite with accents] (http://stackoverflow.com/questions/10451601/htaccess-mod-rewrite-with-accents). 사실, .htaccess 안에 악센트 부호가있는 문자를 넣는 것은 불가능한 것처럼 보입니다. – j0k

+0

[mod_rewrite의'b' 플래그에 관한 아파치 문서] (http://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_b)가 도움이 될 것입니다. – Carsten

+0

[^ accented]를 사용하지 않는 이유는 무엇입니까? 나는 그 어떤 경우에 더 좋다고 생각한다. –

답변

1

당신은 문자와 악센트 문자 모든 종류를 사용하는 경우는, 왜 그냥 아무것도 이동하는 것을 허용하지 않습니다 으로?

참고 :이 규칙을 사용하면 공백도 허용됩니다.

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^(.*)-(\d+)\.htm$ classified.php?id=$2 [L] 

그리고 당신은 정규식을 제한하기로 결정한 경우 나중에, 당신은 예외 확인해야 당신이 이들 문자을 # $ %의 중 하나를 싶지 않아 말할 수 :

Options +FollowSymlinks 
    RewriteEngine on 
    RewriteRule ^([^#$%]+)-(\d+)\.htm$ classified.php?id=$2 [L] 
2

URL에 확장 ASCII 문자가있는 것처럼 보이지만 UTF-8 및 URL로 전송됩니다. 예를 들어 :

/éèêà-1.htm -> /%C3%A9%C3%A8%C3%AA%C3%A0-1.htm 

위의 URL은 다음과 같이 mod_rewrite를 일치 할 수 있습니다

RewriteEngine On 
RewriteRule ^(?:\w|\xC3\xA9|\xC3\xA8|\xC3\xAA|\xC3\xA0)+-(\d+)\.htm$ classified.php?id=$1 [L] 
관련 문제