2013-04-03 4 views
1
난 다음의 .htaccess 파일

htaccess로 리디렉션 사이트/사이트에 하위 폴더/subfolder.php

#~ Turn on rewrite engine 
RewriteEngine on 

#~ Re-write urls for PHP documents. 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

#~ redirect site/subfolder to site/subfolder.php 
RewriteCond %{REQUESTFILENAME} !-f 
RewriteRule ^(.*)/$ $1.php 

이 을 site.com/something하는 site.com/something.php에서 URL을 변경하지만 마지막이

비트 작업을 의도대로, 나는 site.com/myfolder/ 폴더가 있고 사용자가 "site.com/myfolder"로 갈 때 실제 폴더 대신 site.com/myfolder.php를 표시하려고합니다. 이것은 실제로 발생하지만, 페이지가 루트에있는 하위 폴더에있는 것처럼 밟아서 모든 상대 URL이 손상되므로 누구나 해결책을 생각할 수 있습니까?

최종 해결책 : [편집] 아래의 완성 된 스크립트를 게시 해주십시오.

부터 DirectorySlash 오프를 사용한 후에 와서 마지막 문제는 사이트가 http://mysite.com

그래서 당신은 그래서 완벽한 솔루션입니다

리디렉션 간단한 오류와 그 수정해야에만 액세스 할 저점 http://mysite.com/이었고,하지 않는 것이 있었다

답변

0

이 :

#~ Turn off displaying index for folders and give a error 403 instead. 
Options -Indexes 

#~ Set the error page to the top folder of your website ending with a slash, use a http adres to make it act like a re-direct. 
ErrorDocument 403 http://mysite.com/ 

#~ Set default page for folders. 
DirectoryIndex index.php 

#~ Turn off directory slashes. 
DirectorySlash Off 

#~ Turn on rewrite engine 
RewriteEngine on 

#~ Re-write urls for PHP documents. 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 
0

/myfolder하지 /myfolder/myfolder.php로 다시 작성 하시겠습니까? 당신이 그것을 리디렉션 할하고 다시 작성하지 않는 경우

Options +FollowSymlinks 
RewriteEngine on 

RewriteCond %{REQUEST_URI} ^/([a-z0-9-_]+)$ 
RewriteRule ^(.*) /%1.php 

하지만, 그럼 그냥 코드에 .php (공백과)[R] 플래그를 추가 : 당신의 .htaccess 숨겨진 파일에이 코드를 사용해보십시오 . 그렇지 않으면?

+0

아니요, 그냥 모든 파일을 다시 작성하고 싶습니다. 서버와 폴더가 동일한 이름을 가진 PHP 파일에서는 불가능하기 때문에 서버가 폴더의 우선 순위를 지정하고 파일을 무시하므로 슬래시가 생깁니다. 따라서 유일한 해결책은 "DirectorySlash Off"를 사용하는 것입니다. 이제는 내 솔루션에 해당 행을 추가하는 것을 잊어 버렸습니다. 나중에 참조 할 수 있도록 지금 편집 해 보겠습니다. – user2238464