2012-10-07 2 views
2

이 더 이것에 대한 후속 질문과 같다 :병합 몇 모 재 작성 규칙

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

내가 제공 한 사람과 병합하고 싶습니다 : .htaccess - how to force "www." in a generic way?

나는이 규칙이 그 대답에 :

RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

올바른 결과 (올바른 순서 및 규칙)가 있습니까?

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

지금까지 모든 것이 예상대로 작동하지만 내 테스트는 실제 URL이 아닌 임시 URL에서 수행됩니다.

감사합니다.

답변

1

이러한 규칙은 원하는 것을 수행해야하지만 약간 조정할 것입니다. 당신이 일한 이래로, 이것은 내 취향에 기초한 모든 제안 일뿐입니다. :)

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php/$1 [L] 
</IfModule> 

규칙이 아닌 모든 다시 쓰기 옵션이 처음 발생할 때 읽기가 쉽습니다. 한 줄의 규칙이 끝나고 다음 줄이 시작되는 곳을 쉽게 볼 수 있도록 빈 줄을 추가하는 것도 좋습니다.

이 규칙은 필요하지 않습니다. RewriteRule ^index\.php$ - [L] 다음 규칙은 실제 파일에 매핑되지 않는 URI에 대한 요청에만 영향을 미칩니다. index.php는 파일 시스템에 존재하기 때문에 다음 규칙을 트리거하지 않습니다.

index.php 규칙의 경우/$ 1을 추가하면 $ _SERVER [ 'PATH_INFO']에서 요청을 사용할 수있게되며 코드 작성 방법에 따라 도움이됩니다. 이것은 꼭 필요한 것은 아니지만, WordPress 나 CodeIgniter와 같은 애플리케이션에서이 방법을 제안하는 것이 일반적이므로, 언급 할만한 가치가 있다고 생각했습니다.

+0

감사합니다 ... 더 깨끗해 보이고 작동하는 것 같습니다. –