혼란을 사이에 두 url 재작성 규칙

0

질문

이러한 두 가지 규칙이 혼동:

RewriteRule ^health-institute-([a-zA-Z\-]+)-([a-zA-Z\-]+)$ search.php?city=$1&speciality=$2 [L] 
RewriteRule ^health-institute-app-([a-zA-Z\-]+)$ search.php?city=$1 [L]

내가 원하는 때에 도달하는 health-institute-app-mycity (2 차 규칙)서버를 고려 app 으로 값에 도달하려고 search.php?city=app&speciality=mycity (1 규칙)

할 수 있는 방법을 말하는 이들은 두 가지 별도의 규칙?

.htaccess apache mod-rewrite
2021-11-23 10:56:12
1

최고의 응답

2

그렇기 때문에,regex ^health-institute-([a-zA-Z\-]+)-([a-zA-Z\-]+)$ 에서 첫번째 규칙은 경기도 health-institute-app-mycity.

당신을 반대하기 위해 필요 이 두 지시어는 그래서 더 구체적인 규칙이 처음이다.

예를 들어:

RewriteRule ^health-institute-app-([a-zA-Z-]+)$ search.php?city=$1 [L]
RewriteRule ^health-institute-([a-zA-Z-]+)-([a-zA-Z-]+)$ search.php?city=$1&speciality=$2 [L] 

(필요가 없는 백슬래시 탈출을 하면 시작 또는 끝에 캐릭터의 클래스입니다.)

그러나,정규 표현식에서(이제는)두 번째 규칙은 잠재적으로 애매한 이후에 하이픈(-)이를 구분하는 데 사용되는 두 값(cityspeciality다)하지만 하는 것이 또한 모두에 포함되는 캐릭터 클래스를,그래서 그것은 수도의 일부가 될 값이다. 그러나, city speciality 할 수 없 모두 포함 하이픈에도 불구하고,regex 겉으로 허용한다.

예를 들어,어떻게 해야에 대한 요청 health-institute-foo-bar-baz-qux 야 해결됩니까? 이후 수량 +욕심,이것은 현재에서 결과 search.php?city=foo-bar-baz&speciality=qux. 가 발생한 경우에 하이픈 speciality (제안이 될 수 있는 사건에 의해 regex)그것이 일치되지 않습니다.

2021-12-09 22:55:14

@narseoh 실제로 이러한 값으로 구분됩 하이픈,을 포함해서 하이픈에서 문자 클래스(예. 값을 자신을 포함할 수 있습니다 하이픈)을 소개하고 모호성. 예를 들어. 무엇을 해야 health-institute-foo-bar-baz-qux 를 해결하는가? 수 city 을 포함 하이픈?
MrWhite

예 실제로,어떤 도시에 하이픈에서 도시의 이름과 다른 도시는 두 개의 단어,공간은 대체로서 하이픈에서 url
narseoh

@narseoh 다 speciality 포함되지 않 하이픈? (그렇지 않으면 그것의 일부가 될 것입니다 city.) 어떤 경우에 하이픈에서 제거해야 합니다 speciality 문자 등을 제거하고,이 모호성/혼란 때문에,그것은 필요하지 않습니다.
MrWhite

감사@MrWhite,실제로 전문할 수 있는 하이픈 만드는 것을 조금 더 복잡한다. 나는 그것에 대해 생각하고 대체(-)의(/)를 별도의 데이터를,그가 다른 문제는(내가 다른 스레드를 만들은 그것에 대해)
narseoh

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................