2012-02-01 3 views
0

mod_rewrite에 새로운 기능이있어서 가능한 경우 도움이 필요합니다.mod_rewrite를 사용하여 URL에서 검색어 문자열을 제거하려면 어떻게해야합니까?

이 내가 그것을 변경해야 내 이전 URL

www.mysite.com/web/page.php?c=categoryname 

이다 : 나는이 코드를 사용하고

www.mysite.com/web/page/categoryname.html 

그러나 그것은 작동하지 않습니다

RewriteEngine on 
    RewriteBase /web/ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^/([^/]+)/?$ page.php?c=$1 [L] 

어떻게 위의 코드를 수정하여 URL을 올바르게 다시 작성할 수 있습니까? 편집 : 울리히 팔하 에

덕분에 내가 HTML 파일을 리디렉션 관리하지만, CSS, JS 등 리디렉션되지 않고 내가 하나를 얻을 때까지 웹 사이트는이 내가 지금 사용하고있는 코드, RLY 나쁜 보인다 누구를 CSS로 리디렉션 할 것입니까

RewriteEngine On 
    RewriteBase /web/ 

    #redirect www.mysite.com/web/page.php?c=categoryname to 
    #www.mysite.com/web/page/categoryname.html 
    #prevent internal redirect 
    RewriteCond %{ENV:REDIRECT_STATUS} !200 
    RewriteCond %{QUERY_STRING} (^|&)c=([^&]+)(&|$) [NC] 
    RewriteRule ^(page)\.php$ $1/%2.html? [NC,L,R=301] 

    #rewrite www.mysite.com/web/page/categoryname.html to 
    #www.mysite.com/web/page.php?c=categoryname 
    RewriteRule ^(page)/([-a-zA-Z0-9]+)\.html$ $1.php?c=$2 [L,NC] 

BUMP 모든 도움말을 보시기 바랍니다. 규칙의

답변

1

는 위가 규칙을 대체 사이트의 웹 디렉토리에 .htaccess 파일에 다음을 추가합니다.

RewriteEngine On 
RewriteBase /web/ 

#do not process css/js etc 
RewriteCond %{REQUEST_URI} \.(css|js|jpg|png) [NC] 
#alternatively you could skip all existing files. Comment previous line and uncomment next to do so 
#RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

#redirect www.mysite.com/web/page.php?c=categoryname to 
#www.mysite.com/web/page/categoryname.html 
#prevent internal redirect 
RewriteCond %{ENV:REDIRECT_STATUS} !200 
RewriteCond %{QUERY_STRING} (^|&)c=([^&]+)(&|$) [NC] 
RewriteRule ^(page)\.php$ $1/%2.html? [NC,L,R=301] 

#rewrite www.mysite.com/web/page/categoryname.html to 
#www.mysite.com/web/page.php?c=categoryname 
RewriteRule ^(page)/([-a-zA-Z0-9]+)\.html$ $1.php?c=$2 [L,NC] 
+0

답변을 주셔서 감사합니다. httacess 파일에 붙여 넣었습니다. 이전 링크를 클릭하면 다음 경로로 리디렉션됩니다 : http://mysite.com/web/page/categoryname.html?c=categoryname 그것은 편집 후 404 오류 – JoinOG

+0

을 제공합니다. 이제는 필요한 패치로 리디렉션됩니다. 그러나 오류가 발견되지 않습니다. – JoinOG

+0

마침내 제발 끝내십시오 .. – JoinOG

1

귀하의 정규식을 사용하면 안 옵션 최종 슬래시를 추가, /page 누락하고 .html 부분을 제거하기 위해 잊고 — 잘못된 것입니다. 또한 RewriteBase에는 최종 슬래시가 없어야하고 규칙에 선행 슬래시가 있어서는 안됩니다.

이 총,이 같아야합니다

RewriteEngine on 
RewriteBase /web 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^page/([^/]+)\.html$ page.php?c=$1 [L] 
+0

나는 그것을 시도했다 또한 .httacces 파일이 웹 디렉토리에 있다고 말하고 싶다. – JoinOG

+0

나는 당신이 무엇을 요구하고 있는지 이해하지 못합니다. –

+0

내 링크가 보이는 방식을 변경하고 싶습니다. www.mysite.com/web/page.php?c=categoryname을 클릭하면 새 링크로 리디렉션되지 않으며 브라우저에 새 링크를 수동으로 작성하면 , 내가 404 오류가있어 – JoinOG

관련 문제