Mod Rewrite Complete Befuzzlement [폐쇄
-
05-07-2019 - |
문제
다음은 내 .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에 대한 자세한 내용은 다음과 같습니다 허용합니다
제휴하지 않습니다 StackOverflow