2012-05-13 4 views
1

문자열 형식으로 URL을 쓰고 싶습니다. http://www.mysite.com/news/2012/10/04/article-title 하지만 htaccess 파일 사이트 스타일에서 RewriteRule을 사용하면 제대로 작동하지 않습니다. 나는이 질문을 가지고 : PHP에서 이것을하는 가장 좋은 방법은 무엇입니까? 이전에 asp.net 오순절 재작 성 모듈에서이 작업을 수행하지만 지금은이 작업을 수행 할 수 없으며 많은 시간 동안 검색하고 많은 기사를 읽었지만 여전히이 문제가 발생했습니다 ... 감사합니다.깨끗한 URL을 PHP로 작성하십시오

답변

3

를 사용하여 단일 진입 점을 (아마 가장 잘 특정 확장자로 끝나는 경우 확인하여 수행) 원하는 주소를 포함하는 변수를 얻습니다. 이제 PHP 내부에서 (포함 된) 경로를 결정할 수 있습니다. 제어가 쉬운 곳입니다.

또한 절대 경로를 사용하여 스타일을 지정하거나 PHP 변수에 스타일의 절대 경로를 포함시켜야합니다.

위의 .htaccess은 파일이있는 경우 URL을 다시 쓰지 않습니다. (라인 2-3).

+0

이 htaccess 코드를 사용하면 처음에는 제 스타일이 잘 작동하지만 다른 URL은 다음과 같습니다 : www.mysite.com/test/ 제 스타일은 사라졌습니다.이 경우 CSS 경로를 바 꾸었습니다. : href = "../ css/main.css"그리고 제 스타일은 핵심적으로 작동합니다! –

+0

내 css 및 js 경로를 수정하기 위해 변수를 정의하는 방법은 무엇입니까? –

+0

이 코드를 사용하여 문제가 해결되었습니다. define ('ROOT_DIR', dirname (__ FILE__)); \t ('ROOT_URL', substr ($ _ SERVER [ 'PHP_SELF'], 0, - (strlen ($ _ SERVER [ 'SCRIPT_FILENAME']) - strlen (ROOT_DIR))))); –

2

<link rel="stylesheet" href="/css/styles.css" /> 

즉 그때는 아마뿐만 아니라 당신의 CSS 경로를 재 작성하는 당신을 위해 작동하지 않는 경우 : 내 스타일 시트 및 스크립트에 넣어 때

는 개인적으로, 나는 (루트에 적어도 상대 나) 절대 URL을 사용 .

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

이 방법은 모든 요청이와, 인덱스 페이지로 연결됩니다 : 필요에 따라 파일을 제외

+0

좋은 점 - 루트와 관련하여 좋은 점이 많이 도움이됩니다. 나는 일반적으로 스타일/JS 파일/이미지를 "데이터"폴더에 보관합니다.이 폴더는 다시 쓰지 않습니다. 특정 확장자를 제외하는 것보다 쉬울 것 같습니다. 다시 작성하지 않으려는 내용 (PHP 및 HTML 포함)을 데이터 폴더에 넣을 수 있기 때문입니다. –

+0

나는 이것을 할 수 있습니까? 예를 들어, 내 CSS, js, img 파일을 별도의 폴더에 보관하고 해당 폴더를 재 작성에서 제외 할 수는 있지만 어떻게 수행 할 수 있습니까? –

0

규칙이 올바르게 설정되었지만 CSS 서식이 없어지면 CSS 파일의 상대 경로가 올바르지 않음을 의미합니다.

당신은 아마 지금이 바로 같은 것을 사용하고 있습니다 :

<link rel="stylesheet" href="css/styles.css" /> 

변경을 여기에 :

<link rel="stylesheet" href="/css/styles.css" /> 
+0

내가 CSS 파일 경로를 변경했으나 작업량이 많음 –

0

내가 사용하는 솔루션입니다 기본 HTML 태그, 이미지 및 스타일 시트를 정렬 .

적어도 다음을 사용하십시오. RewriteCond %{REQUEST_FILENAME} !-f 적어도 - 더 안전 할 수 있으므로 직접 경로가 여전히 작동합니다.

+0

htaccess 파일에이 줄이 있지만 문제가 여전히 남아 있습니다. –

관련 문제