2014-11-04 2 views
3

방금 ​​Vagrant로 이전했습니다. LAMP 스택을 설정했으며 지금까지 정말 기쁩니다. 내가 겪고있는 유일한 문제는 mod_rewrite입니다. mod_rewrite가 켜져 있고 리디렉션을 위해 작동하는지 확인했습니다.Vagrant에서 mod_rewrite 문제가 발생했습니다.

<VirtualHost *:80> 
    ServerName devserver.local 
    DocumentRoot /var/www/public_html 

    <Directory /> 
     Options FollowSymLinks 
     AllowOverride None 
    </Directory> 

    <Directory /var/www/public_html> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     allow from all 
    </Directory> 

    ErrorLog /var/log/apache2/vagrant_dev-error.log 
    LogLevel warn 
    CustomLog /var/log/apache2/vagrant_dev-access.log combined 
</VirtualHost> 

내가 다음 내 htaccess로 파일에 다음과 같습니다 :

다음 코드는 내 가상 호스트 파일에이 "작업하는 데 사용"어떻게 기본적으로

<IfModule mod_rewrite.c> 

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^tools\/([a-zA-Z_]+)\.json$ tools.php?tool=$1 [QSA,L] 

</IfModule> 

을 내가 http://www.devserver.local/tools/test_function.json을 실행하다 그리고 그것은 http://www.devserver.local/tools.php?tool=test_function

로 바뀌 었습니다. 이제는 내가 방황하고 있습니다. tools.php를로드했지만 쿼리 문자열 tool (예 :)이 없습니다.). PHP 파일이 .php없이 실행될 수있게하는 설정이 거의 비슷합니다.

내가 도구 - test.php에 tools.php 이름을 변경하고 내 htaccess로 업데이트하면이 작업을 얻을 수 있습니다 :

<IfModule mod_rewrite.c> 

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^tools\/([a-zA-Z_]+)\.json$ tools-test.php?tool=$1 [QSA,L] 

</IfModule> 

은 그래서 실행하기 전에 파일을 종료하고 부하를 tools.php 감지 내 .htaccess 파일.

특별히 문제가 있다고 생각하지 않습니다. 아파치 또는 mod_rewrite의 설정 일 수 있습니다. 설정/해제 또는 구성해야합니다. 이전에 경험 한 사람이 있습니까?

SOLUTION

린 존 아래에 설명한 바와 같이,이 MultiViews에 문제가 온되고 있었다. 내 가상 호스트 파일에서 .htaccess 파일을 직접 비활성화하는 대신 Jon의 제안 대신이 파일을 사용하지 않도록 설정했습니다. 둘 다 일했다.

<VirtualHost *:80> 
    ServerName devserver.local 
    DocumentRoot /var/www/public_html 

    <Directory /> 
     Options FollowSymLinks 
     AllowOverride None 
    </Directory> 

    <Directory /var/www/public_html> 
     Options Indexes FollowSymLinks 
     AllowOverride All 
     Order allow,deny 
     allow from all 
    </Directory> 

    ErrorLog /var/log/apache2/vagrant_dev-error.log 
    LogLevel warn 
    CustomLog /var/log/apache2/vagrant_dev-access.log combined 
</VirtualHost> 
+0

어떻게 설치 않았다 LAMP? 방랑하는 사람은 아파치의 작업에 영향을 미칠 수 없습니다. – Cheery

+0

@Cheery 필자는 필요한 각 모듈을 설치했습니다. Apache, PHP, MySQL 등 모두 별도로 설치했습니다. 방글라데시의 특정 문제라고 생각하지 않습니다. mod_rewrite에서 설정해야 할 설정이 될 수 있으므로 tools /가로드 될 때 기본적으로 tools.php가 기본값이 아닙니다. –

답변

1

이것은 여러 가지 문제와 같습니다. Multiviews는 mod_negotiation의 일부이며 URL이 매핑 할 수있는 리소스를 "추측"합니다. 따라서 URL에 /tools/이 있고 파일 /tools.php이 표시되면 요청을 PHP 파일에 바로 매핑하여 mod_rewrite를 완전히 우회합니다. 당신의 htaccess로 파일이 추가

시도 :

Options -Multiviews 
+0

그게 다야! 대신 vhosts 파일에서 사용 중지되었습니다. 위의 질문을 대답으로 업데이트하겠습니다. –

관련 문제