2013-05-05 4 views
1

저는 개인 프로젝트인데, 이는 기본적으로 프로파일 시스템입니다. 이제 URL 서식을 개선하는 방법을 시도해 왔습니다. 이 순간 모드를 다시 작성하십시오.

, 나는 URL의 같이있는 사용하고 -> http://example.com/overview
-> http://example.com/profile/?name=foo
-

을>http://example.com/jobs/?name=foo

두 개요 및 프로파일이 포함되어 내 웹 사이트 디렉토리입니다 하나의 index.php 파일은 데이터베이스에서 PageID를 가져와야합니다. >http://example.com/foo 또는 http://example.com/profile/foo
- ->http://example.com/foo/jobs 또는 http://example.com/profile/foo/jobs

mod_rewrite를 사용하여이 작업을 수행 어쨌든 거기

가 :

지금 나의 목표는 무엇인가에 URL을 포맷하는 것입니다?

원래 URL이 http://example.com/get_var/directoryhttp://example.com/?character=foo/jobs과 비슷할 것입니다.

Stackoverflow와 Google에서 ' mod_rewrite get variables'을 검색했습니다. 그러나 내가보기를 원하는 것은 아무 것도 없었습니다.

너의 감사
Larssy1

+0

따라서 최종 사용자가 어떤 URL을 참조 않으며, 서버가 궁극적으로 어떤 URL을 처리합니까 : 그 필요하지 않고, /jobs가 정적 인 경우에, 당신은 $2로 캡처 할 필요가 없습니다? –

+0

사용자는 다음을 확인합니다. http://mysite.com/profile/Foo/jobs ,, 서버가 처리합니다. http://mysite.com/profile/jobs/?character=Foo – larssy1

답변

1

$1에 다음 / 포함하지 최대하지만 모든 문자를 캡처하는 식 ([^/]+)를 사용, 슬래시 사이의 URI의 일부를 추출하고 URL 매개 변수로 추가하려면 : 동적으로이 /jobs 또는다음 여부 즉, 귀하의 예제에서 Foo 다음에 무엇을 캡처합니다

RewriteEngine On 
RewriteRule ^profile/([^/]+)/([^/]+/?)?$ profile/$2?character=$1 [L] 

위의 규칙또는 /somethingelse이면 /profile/somethingelse?character=Foo으로 추가됩니다.

RewriteEngine On 
# Don't dynamically capture what comes after the first variable group... 
RewriteRule ^profile/([^/]+)/jobs$ profile/jobs?character=$1 [L] 
+0

이렇게하면 50pages가 작동하면 어떻게됩니까? 이것은 모든 단일 페이지에 RewriteRule을 추가해야한다는 것을 의미합니까? – larssy1

+0

@ larssy1 아니, 어떻게 다릅니 까? 최상위 규칙은'/ jobs' 대신에 모든 값을 처리합니다. '/ profile'이 바뀌면 해결 될 수도 있지만 예제가 필요할 것입니다. –

+0

몇 가지 예제는 */profile/Foo/jobs, */profile/Foo/about, */profile/Foo, */profile/Foo/preferences입니다. */profile/Foo/jobs 및 */profile/Foo/jobs /가 다른 URL인지, 마지막/선택 사항을 만드는 방법에 대한 코드에 btw 결함이 하나 있습니까? – larssy1

관련 문제