2014-04-08 4 views
0

확장자가있는 모든 요청에서 확장자를 제거하려고합니다. mod_rewrite를 사용하여 해당 이름을 가진 파일이나 디렉토리가 존재하지 않습니다. 나는 하나의 확장을 위해 일하고있다. 그러나 확장이 무엇이든 관계없이 일할 수 있기를 바란다. 나는 그것이 정규 연장으로 할 수 있다고 확신하지만, 나는 무엇을 해야할지를 아는 사람들과 충분히 친숙하지 않다. 내 코드는 다음과 같습니다..htaccess로 모든 확장자를 제거하십시오.

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/ 
RewriteRule ^(.*)\.html$ $1 [R=301,L] 

고마워요.

답변

0

그래서 며칠간 문제를 해결 한 후에 해결책을 찾았습니다. 확장자와 파일 또는 디렉토리가 존재하지 않는 경우 기간 앞의 간단한 일치 항목을 사용하여 확장자를 제거합니다. 또한 후행 슬래시가 있는지 확인하고 제거 할 것입니다. 마지막으로, 내 하위 디렉토리의 실제 페이지로 다시 작성합니다. 내가하지 않으면 작동하지 않기 때문에 모든 RewriteRule에 L을 붙여야했습니다.

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} ^.*\..*$ 
    RewriteRule ^(.*)\..*$ $1 [R,L] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} ^(.*)\/$ 
    RewriteRule ^(.*)\/$ $1 [R,L] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !^/pages/ 
    RewriteRule ^(.*)$ pages/$1.html [L] 
</IfModule> 
관련 문제