2012-07-19 2 views
1
RewriteEngine On 
RewriteBase /city_name 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /city_name/index.php?page=$1 [L] 

그래서 domain.com/calgary/을 수행하면 데이터베이스에서 제대로 읽을 수있다.아파치 mod_rewrite는 폴더에서 읽지 않는다.

domain.com/calgary/test.php 폴더가 제대로 읽지 않는다면 가상 디렉터리라고해도 파일이/calgary에 있다고 생각하기 때문입니다. 가/CITY_NAME/디렉토리에서 .PHP로 파일을 읽을 대신/캘거리/(가상)

+0

domain.com/calgary/test.php를 다시 작성해야하는 항목은 무엇입니까? – zerkms

+0

주소가 domain.com/calgary/test.php를 시작하지만 test.php가 /calgary/ (또는 City ID)에 의해 동적으로 생성 된 모든 도시 파일을 보유하고있는 domain.com/city_name/에 존재하게합니다. @zerkms – Jordie

+0

글쎄, 정확한 주소는'domain.com/calgary/test.php'로 다시 써야합니까?! 'mod_rewrite'는 한 문자열을 다른 문자열로 재 작성하는 것 외에는 아무것도하지 않습니다 – zerkms

답변

1

수 있도록

그래서 나는/CITY_NAME/폴더에 htaccess로 디렉토리에 아마 도움을 찾고 다음 규칙을 추가하십시오 :

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} /([^\./]+)\.php$ 
RewriteCond %{DOCUMENT_ROOT}/city_name/%1.php -f 
RewriteRule ^(.*)/([^\./]+)\.php$ /city_name/$2.php?page=$1 [L] 
+0

아니요 Found 요청한 URL /calgary/test-page.php를이 서버에서 찾을 수 없습니다. 그러나 내가 할 때/캘거리/그것은 나에게 도시 세부 정보를 뱉어 버릴거야. – Jordie

+0

@Jordie'/ city_name/test-page.php' 파일이 존재합니까? 이것이이 줄이 검사하는 내용 :'RewriteCond % {DOCUMENT_ROOT} /city_name/%1.php -f'이며 서버의 문서 루트에'/ city_name/test-page.php'가 없으면 조건은 실패합니다. (test-page.php가 symlink 인 경우 작동하지 않을 수 있습니다). –

+0

예/도시명/테스트 페이지 .php가 있습니다. 그 폴더입니다. 그러나 * city_name *은 가면 처리 된 폴더임을 기억하십시오. 사용자는 * city_name *을 보지 않아야합니다. * calgary */my-profile.php를 보게됩니다. 그러나 서버는 * calgary * 폴더에서 my-profile.php 또는 test-page.php 파일을 찾고 있습니다. * calgary * 폴더를 잃지 않고 리디렉션을 수행 할 수있는 방법이 필요합니다. 말이 돼?/디렉토리에있는 .htaccess 파일에는 위의 코드가 있습니다. 귀하의 예를 들어, 나는 위의 코드 아래에 배치/내 위의 바꾸기 또는 나는/city_name/폴더에 배치 할 것이라고. (mod_rewrite beginner) – Jordie

관련 문제