2016-06-22 3 views
3

.htaccess 파일에서 regex를 사용하여 URL을 일치 시키려고합니다.Apache RewriteRule - 문자열의 시작을 일치시킬 수 없습니다.

"$"를 사용하여 문자열의 끝을 일치시킬 수 있지만 "^"를 사용하여 문자열의 시작을 일치 ​​시키려고하면 RewriteRule이 작동을 멈 춥니 다.

여기 내 htaccess로 파일입니다 작동합니다 "^"정규 표현식없이

RewriteEngine On 
RewriteBase "/" 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule "^example-url$" "index.php" 

,하지만 너무 느슨한입니다. 나는 2 시간 동안이 작업을 해봤지만, 시도한 모든 정규식 테스터에서 작동했던이 아주 기본적인 정규식 이후로 무엇을 시도해야할지 모르겠습니다.

내 생각에 atm은 실제로 문자열의 시작 부분과 관련이 있지만, 테스트하는 방법을 모르겠다. 최상위 도메인 이름 바로 뒤에 "/".

편집 : 이 만들어 내 모든 문제가 사라 html로 폴더에 htaccess로 이동, 위의 .htaccess 파일은 이제 잘 작동합니다. @Riad Loukili과 @ P0lT10n에 감사드립니다.

내 가상 디렉터리를 설정하는 방식으로 인해 문제가 발생했다고 생각합니다.

답변

3

확실하지하지만 시도

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^example-url$ index.php 

나는 This .htaccess tester에 그것을 시도하고 일했다.

가능한 설명 : 이미 정규 표현식에서 /를 사용하여 URL을 시작할 필요가없는 RewriteBase를 지정했습니다.

+0

그게 문제예요. 그가'RewriteBase'를 이미 정의했기 때문에'/ example'이 아닌'/ example'과 일치 시키려고합니다. – matiaslauriti

+0

@Riad Loukili 답장을 보내 주셔서 감사합니다. 그냥 시도했지만 규칙처럼 행동하는 것 같습니다. – Andrew

+0

@ P0lT10n 'RewriteRule'에 대한 경험이별로 없으므로 잘못 생각한 것 같습니다. 'RewriteBase'명령이 외부 경로가 아닌 내부 경로에 영향을 미쳤다고 생각했습니다. 두 가지 모두에 영향을 주나요, 아니면 제가 이것을 오해하고 있습니까? – Andrew

관련 문제