2013-07-18 4 views
0
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]*)$ /?a=$1 [L] 
RewriteRule ^([^/]*)/([^/]*)$ /?a=$1&app=$2 [L] 
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

이 모든 URL 검색 엔진 및 사용자에게 친숙하게 생각하지만, 문제는 사람이 http://pattersoncode.ca/realurlhere/에가는 경우는 실제 디렉토리 비록 오류 페이지로 리디렉션 것입니다. 어쨌든 이것을 막을 수 있습니까? 그들이 http://pattersoncode.ca?a=realurlhere에 가려고 생각하고 있어야합니다.mod_rewrite를 변경 실제 URL을

답변

0

이 때문에이 라인에서 잘못된 정규 표현식으로 일어나고있다 : /까지 0 개 이상의 문자와 일치한다

RewriteRule ^([^/]*)$ /?a=$1 [L] 

가 발견된다. 변경 대상 :

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]*)/?$ /?a=$1 [L] 

문제가 해결됩니다. 내 대답에는 후행 슬래시 옵션이있어서 /realurlhere//realurlhere이 모두 지원됩니다.