문제

다음은 내 .htaccess 파일입니다

Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteRule subpage\?sid /index.php [R=301,L,NC]

내 요청은 http://example.com/subpage?sid

index.php로 리디렉션하는 대신 404를 찾을 수 없습니다.

나는 탈출하지 않았습니까? 요청을 변경합니다 http://example.com/subpage\?sid

나는 이것을 작동시키기 위해 많은 것들을 시도했지만 이제는 혼란스러워졌습니다.

도움이 되었습니까?

해결책

query_string은 URI의 일부가 아닙니다. 문서에서 재 작성:

참고 : 쿼리 문자열

그만큼 무늬 쿼리 문자열과 일치하지 않습니다. 대신, 당신은 다시 작성해야합니다 %{QUERY_STRING} 변하기 쉬운.

문서가 말했듯이, 다음과 같은 것과 같은 재 작성제를 사용해야합니다.

RewriteCond %{QUERY_STRING} (^|&)sid([&=]|$) [NC]
RewriteRule ^/?subpage /index.php [R=301,L,NC]

%{query_string}가 실제로 옵션이 아닌 경우 시도하십시오.

# Apache is supposed to use PCRE, but doesn't seem to like "\\s"
RewriteCond %{THE_REQUEST} subpage?sid[^!-~] [NC]
RewriteRule ^/?subpage /index.php [R=301,L,NC]

또한, 당신은 당신이 그것을 사용하는 동안 다시 쓰기베이스를 필요로하지 않습니다 ( "rewritebase /"). 줄에 주석하고 확실하게 테스트 할 수 있지만, 영향을 미치지 않고 삭제할 수 있습니다.

다른 팁

사이트의 VirtualHost 설정을 확인하고 해당 디렉토리에 대한 허가 전지 설정을 설정해야합니까?

<Directory /var/www/vhosts/some_host>
     ....
     AllowOverride All
</Directory>

Apache 's에 대한 자세한 내용은 다음과 같습니다 허용합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top