2014-10-24 2 views
1

을 가진 때 내 htacces 파일에서이 두 가지 규칙이 리디렉션을 수정하는 방법 :이 개의 RewriteRules

#rewrite pagnition 
    RewriteRule ^([a-zA-Z0-9_!-]+)/([a-zA-Z0-9_!-]+)$ index.php?sideID=$1&currentpage=$2 

출력 URL : http://example.com/blog/2

#rewrite services 
    RewriteRule ^([a-zA-Z0-9_!-]+)/([a-zA-Z0-9_!-]+)$ index.php?sideID=$1&p=services/oneservice/$2 

출력 URL : http://example.com/services/oneservice

첫 번째를 매력처럼 작동하지만 2 일에 액세스 할 때 서버가 충돌 할 때까지 여러 번 페이지를 다시로드하는 데 문제가 발생합니다.

만약 내가 첫 번째 것을 비활성화하면, 누군가가이 일에 대해 좋은 영혼을 가지고 있다면, 그와 같은 두 번째 작업이 좋아질 것입니다.

+0

L 플래그를 추가하려고 했습니까? http://stackoverflow.com/a/17144329/4154134 – jdussault

+0

나는 여전히 동일한 발급을했다. – sdfgg45

답변

1

두 정규식이 동일한 URL과 일치하기 때문에 문제가 발생합니다. 규칙을 다음과 같이 조정하십시오.

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

# output url: http://example.com/blog/2 
RewriteRule ^([\w!-]+)/([0-9]+)/?$ index.php?sideID=$1&currentpage=$2 [L,QSA] 

# rewrite services 
RewriteRule ^([\w!-]+)/([\w!-]+)$ index.php?sideID=$1&p=services/oneservice/$2 [L,QSA] 
+0

Seam이 작동하지만 다른 규칙을 추가하려는 경우 RewriteRule^([\ w! -] +)/([\ w! -] +) $ index.php? sideID = $ 1 & p = services/twoservice/$ 2 [L, QSA]? 정규 표현식이 다른가? – sdfgg45

+0

확실하게 정규 표현식을 캡쳐하는 것은 각각의'RewriteRule'에서 달라야합니다 – anubhava

+0

끝 부분 : services/oneservice/$ 2가 정규식으로 캡쳐되어 하나의 규칙을 실행할 수 있습니까? 또는 patch = services/oneservice/$ 2, & p = services/two/$ 2와 & p = services/tird/$ 2와 같은 eatch에 대한 하나의 규칙이어야합니다. – sdfgg45

관련 문제