2014-01-11 1 views
0

하지만 작동하지 않는 :아파치 다시 이상한 행동 내가 구독 취소 페이지가 처음 내가이 있고 있었다에서</p> <p>깨끗한 URL을 만들려고 노력하고있어 뉴스 레터

RewriteEngine On 
RewriteBase/
RewriteRule ^/unsubscribe/(.*)$ /unsubscribe.php?email=$1 [NC,L] 

매우이다 제 생각에는 이상합니다. 그래서 몇 가지 다른 방법을 시도하고 다음과 같이 끝났다 :

RewriteEngine On 
RewriteBase/
RewriteRule ^/?unsubscribe/?(.*)$ /unsubscribe.php?email=$1 [NC,L] 

이것은 실제로 작동합니다. 그러나 그것은 매우 이상한 결과를줍니다.

이메일 매개 변수 값

은 지금 :

.PHP/테스트

가이 동작 방법을 내가 볼 수 없기 때문에 그것은 나를 미치게된다.

여기에서 무슨 일이 일어나고 있는지 그리고 어떻게 고쳐야하는지에 대한 아이디어가있는 사람이 있습니까?

나는 PHP 대신 문자열을 끝내고 싶지 않다. 뭔가 잘못되었다.

답변

1

내 친구는 어떠니? :)

작동 해 주시겠습니까? 이걸 알아 보겠습니다.

한다 RewriteRule^탈퇴 /([^/.]+)/?$ unsubscribe.php? 이메일 = $ 1 [L]

+0

답장을 보내 주셔서 감사합니다. 귀하의 규칙을 시도했지만 아무 것도하지 않았습니다.슬래시가 무시 된 것처럼 보입니다. 아주 이상한 – baklap

1

은 첫 번째 규칙이 작동하지 않습니다에한다 RewriteEngine, 규칙 때문에 URL의 기본 정보를 가져옵니다. 따라서 URL이 /unsubscribe/[email protected] 인 경우 RewriteBase (/)이 제거되고 RewriteRule은 /가없는 unsubscribe/[email protected]이 표시됩니다.

두 번째 규칙에서 BOTH / -es는 ?으로 선택적으로 지정됩니다. 따라서 unsubscribe.php/testunsubscribe 리터럴을 발견하고 그 뒤의 모든 것을 취합니다 - .php/test - 이메일 매개 변수에 넣으십시오. 테스트 할 때 브라우저에 /unsubscribe.php/test이 아닌 /unsubscribe/test을 사용해야합니다.

+0

답장을 보내 주셔서 감사합니다. 내가 내 브라우저에서 /unsubscribe.php/test 사용하지 않은, 단지/탈퇴/테스트 나는 htaccess로 변경하고 RewriteBase를 제거하고 그냥 의한 규칙 대체 : 한다 RewriteRule ^/탈퇴 $의 /unsubscribe.php을 ? email = test [NC, L] 이것은 작동하지 않습니다. 그냥 빈 매개 변수. – baklap

+0

RewriteBase는 남겨두고 패턴'^/unsubs ... '는'^ unsubs ...'(선행 슬래시는 제거하십시오)로 변경하십시오. WarriorTurtle이 제안한 것처럼, 첫 번째 예제에서와 같이'RewriteBase/'도 사용합니다. –

+0

RewriteEngine On RewriteBase/ RewriteRule^unsubscribe $ unsubscribe.php? email = test 슬래시 또는 무언가를 무시한 것 같습니다. – baklap

0

알았어.

기본적으로 MultiViews가 활성화되어있는 것처럼 보였습니다.

추가 :

htaccess로 (또는 아파치 설정)으로
Options -MultiViews 

문제를 해결했습니다.

1

이 규칙은 당신을 위해 작동합니다 :

Options -MultiViews 
RewriteEngine On 
RewriteBase/

RewriteRule ^/?unsubscribe(?:/(.+))?$ /unsubscribe.php?email=$1 [NC,L,QSA] 

문제는 응용 프로그램 후 패턴과 일치하고 두 번 다시 쓰기를하고 있던 당신의 정규식에 있었다.

관련 문제