2011-01-17 2 views
0

현재 검색 결과가 example.com/index.php?show=foo 인 사이트가 있고 example.com/show/foo을 읽고 싶습니다.Mod_rewrite 문제 :? =에서 짝을 이루고 싶다면 아무 것도 작동하지 않는 것 같습니다.

나는 다음의 .htaccess를 시도했습니다 ... 나의 이해는이 검색 엔진 로봇에 표시 할 것이며, 몇 백 HTML 파일을 생성하는 것보다이 일을 훨씬 간단한 방법을 보인다 코드 :

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^show/(.*)$ index.php?show=$1 [NC,L]

아니 주사위입니다. 내가 여기에 누락 사항에

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9A-Za-z]+)/?$ /index.php?show=$1 [L]
</IfModule>

어떤 아이디어 :

또한 내가 다른 stack overflow question에서 발견 된이 시도?

+0

오류가 있습니까? –

+0

오류가 없으면'.htaccess'가 무시된다는 의미입니다. 'httpd.conf'에서'AllowOverride' 지시자를 확인하고, AllowOverride None이 아닌지 확인하십시오. –

+0

오류가 없습니다. httpd.conf를 찾을 수 없습니다. 어디에 위치합니까? 또한 www.example.com이 example.com에 다시 쓰여지는 것처럼 다른 .htaccess 규칙이 뒤 따르고 있습니다. – Davezatch

답변

0

^([0-9A-Za-z]+)/?$은 선택적으로 슬래시로 끝나는 영숫자 문자 만 포함하는 요청 URI와 일치 시키려고합니다. 따라서 마지막에 더 많은 문자가 있기 때문에 URI가 show/foo과 일치하지 않습니다 (즉, 슬래시 뒤에 표현식이 문자열의 끝을 찾기를 기대합니다).

시도 :

RewriteRule ^show/([0-9A-Za-z]+)/?$ /index.php?show=$1 [L] 또한

는,이 추가적으로 쿼리 매개 변수를 캡처, 당신이 할 수 있습니다 :

RewriteRule ^show/([0-9A-Za-z]+)/?$ /index.php?show=$1&%{QUERY_STRING} [L]

이 의미 /index.php?show=page&id=1

+0

좋아요. 작동하도록 설정되었지만 이제는 example.com/foo와 같은 단일 단어로만 작동합니다. 검색어는 여러 단어로되어 있으며 index.php? show = second + foo로 출력되며 404를 던집니다. – Davezatch

+0

알아 낸 내용은 모든 것을 + 후에 추가해야하므로 ([0-9A-Za-z +]) +) – Davezatch

0

I에 /show/page?id=1 재 작성과 같은 URL '서 친절한'사이트를 사용하는 사이트에서 이와 같은 작업을 수행하십시오. URL htaccess로에서

: index.php에에 그런

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* /index.php [L] 

:

if ($_SERVER['REQUEST_URI']=="home") { 
    include ("home.php"); 
} 

htaccess로 규칙을 요청 파일 또는 디렉터리를 찾을 수 없습니다 경우 index.php에로드를 알려줍니다. 그런 다음 요청 URI를 구문 분석하여 index.php가 수행해야하는 작업을 결정합니다.

올바른 길을 가고 있지만 규칙에 문제가 있습니다. .*은 모두 포괄적입니다. 필요한 경우 시작하여 더 제한적으로 이동하십시오.

관련 문제