
나는 다음을 가지고 있습니다 VirtualHost
:
<VirtualHost *:80>
DocumentRoot "/var/www/html/example.com"
ServerName example.com
ServerAlias *.example.com
<Directory "/var/www/html/example.com">
Require all granted
Options -Indexes +FollowSymLinks -ExecCGI
AllowOverride All
DirectoryIndex index.php
<IfModule mod_proxy_fcgi.c>
RewriteEngine On
RewriteBase /
RewriteOptions InheritBefore
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^([^\.]+\.php)$ fcgi://127.0.0.1:9000/var/www/html/example.com/$1 [L,P]
</IfModule>
</Directory>
</VirtualHost>
그리고 ..htaccess
파일 /var/www/html/example.com/mysub/.htaccess
내부에는 .htaccess
다음이 있습니다.
Options -MultiViews
RewriteEngine On
RewriteBase /mysub
Options +FollowSymLinks
RewriteCond $1 !^(index\.php|assets|css|js|favicon\.ico|robots\.txt)
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
문제:example.com
내 브라우저에서는 잘 탐색할 수 있습니다 . 하지만 으로 이동하려고 하면 대신 example.com/mysub
나를 표시합니다 .example.com/index.php
example.com/mysub/index.php
$1
VirtualHost RewriteRule에 디렉토리 접두사가 포함되어 있지 않다는 의미라고 가정합니까 mysub
? 왜 그런 겁니까? 두 파일의 RewriteBase(다름)가 문제일 수도 있다고 생각했지만 수정해도 출력이 변경되지 않았습니다.
문제는 VirtualHost mod_rewrite에 있다고 생각합니다. 다른 서버(Centos 5)에서는 웹사이트가 완벽하게 작동합니다(php-fpm을 사용하지 않지만). htaccess는 타사 코드의 일부이므로 수정하지 않는 것이 좋습니다.
PHP 5.4; 센트OS 7; 아파치 2.4
편집하다:htaccess Rewrites를 VirtualHost 파일로 이동하고 / 기반으로 작동하도록 경로를 수정하면 작동합니다. 그러나 수정된 htaccess를 사용하여 제3자 코드가 언제든지 업데이트될 수 있으므로 이는 이상적이지 않습니다.
답변1
VirtualHost의 Directory 지시문 외부로 Rewrite를 이동하면 문제가 해결되었습니다.
<VirtualHost *:80>
DocumentRoot "/var/www/html/example.com"
ServerName example.com
ServerAlias *.example.com
<Directory "/var/www/html/example.com">
Require all granted
Options -Indexes -MultiViews +FollowSymLinks
AllowOverride All
</Directory>
RewriteEngine On
RewriteOptions InheritBefore
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond $1 ^(.*\.php(/.*)?)$
RewriteRule ^(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/$1 [L,P]
</VirtualHost>