Lion의 ~ / 사이트에있는 .htaccess 파일을 사용하여 URL 다시 쓰기 (mod_rewrite) 활성화 /private/etc/apache2/users/<myusername>.conf변화 AllowOverride

Lion에서 mod_rewrite를 사용할 수 없습니다. ~ / 사이트에서 .htaccess 파일을 사용하여 여러 웹 사이트를 로컬로 개발하고 있습니다. 나는 10.7.3에 있고 httpd.conf에서 PHP를 활성화하는 것을 제외하고는 구성 파일을 만지지 않았습니다 (작동합니다).

나는 이것에 대해 적어도 2 가지 질문이 있다는 것을 알고 있지만 거기에 자세한 해결책은 효과가 없습니다. 웹에서 찾은 다른 솔루션도 마찬가지입니다. 나는 어리 석거나 무언가를 간과해야합니다. 그렇지 않으면 아마도 미쳐 가고 있지만 작동하지 않습니다.

나는 모든 평범한 것들을 시도했다.

  1. 에서 /private/etc/apache2/users/<myusername>.conf변화 AllowOverride NoneAllowOverride All웹 서버를 다시 시작

  2. 또한,에가 /private/etc/apache2/httpd.conf,의 / 모든 사건 (들) 변경 AllowOverride NoneAllowOverride All이러한 지침이 발견되는 곳 나는 모든 다양한 장소에서 그것을 시도했습니다를 –

  3. 기본적으로 값을 포함하여 Options행 위 / 아래의 AllowOverride행에 가능한 모든 값 조합을 시도하십시오 .Indexes MultiViews FollowSymLinks All

물론 그러한 변경 후에는 항상 웹 서버를 다시 시작하십시오. 이 중 어느 것도 작동하지 않습니다. 내 깨끗한 URL은 모두 작동하지 않습니다. 404를 얻지 못했습니다. Apache의 오류 로그는 “파일이 존재하지 않습니다 :”오류를 표시합니다. 따라서 mod_rewrite 모듈이 전혀 작동하지 않는 것 같습니다.

mod_rewrite가 httpd.conf에로드되어 있는지 확인했습니다. 기본적으로 Lion 설치에서 그렇습니다.

미친 것은 사자를 운영하는 새로운 기계로 마이그레이션 할 때까지 모든 것이 완벽하게 작동했다는 것입니다. 즉, .htaccess 파일에서 오류가 발생했기 때문에 이전에 작동했음을 알고 있습니다. 또한 .htaccess의 오류 인 경우 Apache의 error_log에있는 mod_rewrite 모듈에서 일종의 오류 메시지를 얻습니다. 적어도 모듈 자체가 호출되고 있음을 알려줍니다. 그러나 이것은 일어나지 않습니다.

내가 뭔가를 내려다보고 있습니까? 다른 곳에서 구성 설정을 변경해야합니까? PHP 설정을 변경해야합니까? 왜 지시 있습니다 (같은 에서라도 사자에 활성화 mod_rewrite를하는 방법이맥 OS X에 대한 작업에 mod_rewrite를을 얻는 ) 다른 사람에 대한하지만 나를 위해 일? 🙂

나는 이미 이것에 몇 시간을 낭비했다. 어떤 도움이라도 대단히 감사하겠습니다.



답변

/etc/apache2/users/username.conf에 다음이 있는지 확인해야합니다.

<Directory "/Users/username/Sites/">
    Options Indexes MultiViews FollowSymlinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

FollowSymlinks와 AllowOverride는 여기서 필수적입니다. 귀하의 질문에 두 가지 모두를 암시하는 동안 올바르게 구성하지 않았을 수 있습니다.

httpd.conf /private/etc/apache2/extra/httpd-userdir.conf에 포함되어 있는지 확인하십시오. 기본적으로 사용됩니다.

수정 한 후 웹 서버를 다시 시작하여 변경 사항을 적용하십시오.

여전히 문제가있는 경우 실제 재 작성 규칙에 문제가있을 수 있습니다. 이전에도 .htaccess 컨텍스트에서 사용 했습니까? .htaccess에서 재 작성 규칙 정규식은 선행 슬래시없이 요청 URI와 일치하며 항상 .htaccess가있는 디렉토리상대적으로 일치하지만 전역 httpd.conf에서는 URI가 선행 슬래시와 일치해야합니다. 웹 루트를 기준으로합니다. ~ / Sites의 하위 디렉토리에 .htaccess가 있다고 가정하므로 재 작성 규칙은 .htaccess가 (가상) 호스트의 웹 루트에있을 때와 다르게 작동 할 수 있습니다.

mod_rewrite를 디버깅하기 위해 다시 쓰기 로깅을 활성화 할 수 있습니다. /etc/apache2/httpd.conf에서 활성화해야합니다.

RewriteLogLevel 3
RewriteLog /path/to/rewrite.log


답변

옵션 추가 + FollowSymLinks가 잘 작동했습니다.

Options +FollowSymLinks

RewriteEngine on
RewriteBase /
RewriteRule


답변

~ / Sites 디렉토리의 하위 폴더에서 올바르게 설정된 VirtualHost 아래의 하위 폴더에있는 동안 .htaccess 파일이 완전히 무시되는 비슷한 문제가 발생했습니다.

마지막 시간을 다른 구성 파일로 재생하고 다양한 위치에서 AllowOverride All을 설정 한 결과, Finder의 .htaccess 파일처럼 보이는 .htaccess 파일이 실제로는 .htaccess.txt 파일임을 알았습니다. 확장명이 숨겨져 있습니다.

.htaccess 파일을 확인하고 변경하려면 해당 파일을 마우스 오른쪽 버튼으로 클릭하고 정보 입수를 선택한 다음 맨 앞에있는 확장자를 제거하십시오.

그리고 지금 작동합니다!


답변

.htaccess 항목 아래 수정

Options Indexes FollowSymLinks


<ifModule mod_rewrite.c>

RewriteEngine On
#RewriteBase /~charles/Sites/Timesheet/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [NC,QSA,L]


</ifModule>


답변

.htaccess를 / Library / WebServer / Documents에 배치하고 “localhost /”를여십시오. 그것을 테스트하기 위해 예상대로 작동합니다. “~ / Sites”에서는 작동하지 않습니다. 감사합니다 Niels Heidenreich!


답변

다음을 입력하면 : / Users / username / app_name

/는 웹 서버의 루트를 나타냅니다.

“localhost /”

다시 쓸 때 / ~ username / app_name을 사용하면 작동합니다.


답변