C,C++ mod_rewrite로 .php 확장자 제거하기

아마즈 2018.10.31 22:04 조회 수 : 149

[apache] mod_rewrite로 .php 확장자 제거하기

 
 Answers
 

위의 대답은 URL에서 .php 확장자를 제거하지 않고 확장자없이 .php 파일을 방문 할 수있게 해줍니다. .php 확장자를 URL에서 완전히 제거하려면 root/.htaccess 에서 다음 규칙을 사용할 수 있습니다.

RewriteEngine on

#1)externally redirect "/file.php" to "/file"   
RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteRule ^ /%1 [NC,L,R]
#2)Internally map "/file" back to "/file.php"
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ /$1.php [NC,L]
 Question

.php 확장자가없는 페이지를 참조 할 수 있도록 mod_rewrite 규칙 세트를 원하지만 PHP 확장을 포함하도록 다시 작성해야합니다. 이것은 1 & 1 서버에서 실행됩니다.

더 많은 것을 알 수 있도록 참고 문헌이 있습니까?

 
 
 

http://example.com/test.php 사용하여 http://example.com/test 링크를 사용하려면 다음 단계를 따르세요.

RewriteEngine on
RewriteRule ^([^\.]+)$ /folder/$1.php [NC,L] 
 
 
 

.htaccess 파일 : 다음 행을 추가하십시오.

Options +MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

https://alexcican.com/post/how-to-remove-php-html-htm-extensions-with-htaccess/

이제 apache2.log 파일에서 AllowOverride 조건을 확인해야합니다. set options AllowOverRide 웹 루트 디렉토리의 모두 :

    Options Indexes FollowSymLinks  
    AllowOverride All  
    Require all granted

.php 확장자없이 웹 페이지에 액세스하려고하면 아파치 error.log 파일에서 다음 오류가 발생할 수 있습니다. /var/www/html/web/.htaccess : 'RewriteEngine'명령이 잘못되었습니다. 맞춤법이 잘못되었거나 정의되었을 수 있습니다. 서버 구성에 포함되지 않은 모듈에 의해

이 문제를 해결하려면 mod_rewrite 모듈을 설치하지 않았습니다. 다음 명령을 실행하십시오. ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

.htaccess : 명령 'RewriteEngine'이 잘못되었습니다. 서버 구성에 포함되지 않은 모듈에 의해 맞춤법이 잘못되었거나 정의되었을 수 있습니다.

웹 페이지를 새로 고친 후에도 error.log 파일에 다음과 같은 오류가 발생할 수 있습니다.

[negotiation:error] [pid 4650] [client 127.0.0.1:46461] AH00687: Negotiation: discovered file(s) matching request: /var/www/html/web/test (None could be negotiated). (I was trying to access localhost/web/test.php using the url: localhost/web/test)

이 문제를 해결하려면 apache2.conf에 다음 행을 추가해야합니다.

<IfModule mod_mime.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php4
AddType application/x-httpd-php .html
AddType application/x-httpd-php-source .phps

 

https://forums.digitalpoint.com/threads/htaccess-addtype-application-x-httpd-php-php-htm-html-and-maybe-a-fix.7584/#post-2491687

이제 filename 만 사용하여 test.php 파일에 액세스 할 수 있습니다. test

 
 
 

단일 파일을 몇 개 만들면 RewriteEngine을 피하는 것이 더 쉬울 수 있습니다.

나는 이것을 사용했다 :

<Files $filename>
   SetHandler application/x-httpd-php
</Files>

재 작성보다 강력하고 유연 하지는 않지만 더 빠르며 PHP로 처리되는 특정 파일을 원한다면 갈 길이 멀어 질 것 같습니다.

 

나도 Files 명령으로 해결하였다

CLOSE