2010-04-13 2 views
0

Ниже вы найдете мою текущую запись vHost, которую я использую для сайта, который я сейчас разрабатываю. Эта запись vHost отлично работает, когда я нахожу ее на своей локальной машине, но когда я нажимаю свой код на мой промежуточный сервер, на котором выполняется эта же запись vHost, я получаю ошибку 500 Internal Server.vHost RewriteRule создает ошибку 500

Машина, на которой я запускаю этот vHost, работает Apache 2.2.9 (Debian).

<VirtualHost 206.217.196.61:80> 
    SuExecUserGroup 13labs 13labs 
    ServerAdmin [email protected] 
    ServerName admin.13labs.net 
    ServerAlias admin.13labs.net 

    DirectoryIndex index.php 
    DocumentRoot /var/www/13labs.net/html/admin/ 
    ErrorLog /var/www/13labs.net/logs/error.log 

    # Hide .svn Directories 
    <DirectoryMatch "\.svn"> 
      Order deny,allow 
      deny from all 
    </DirectoryMatch> 

    # FastCGI 
    Alias /fcgi-bin/ /var/www/13labs.net/fcgi-bin/ 

    AddHandler php-fastcgi .php 
    AddType application/x-httpd-php .php 
    Action php-fastcgi /fcgi-bin/admin-php.fcgi 

    <Directory /var/www/13labs.net/fcgi-bin/> 
      SetHandler fcgid-script 
      AllowOverride None 
      Options -Indexes +ExecCGI -FollowSymlinks -SymLinksIfOwnerMatch 
      Order allow,deny 
      Allow from all 
    </Directory> 

    <Directory /var/www/13labs.net/html/admin/> 
      AllowOverride None 
      Options -Indexes -FollowSymlinks -SymLinksIfOwnerMatch 
      FileETag All 
    </Directory> 

    # Rewrite Logic 
    RewriteEngine On 

    RewriteCond %{REQUEST_FILENAME} !\.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf)$ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l 
    RewriteRule ^/(.+)$ /index.php/$1 [PT,QSA,L] 

Спасибо за любую помощь, которую вы можете предоставить.

С наилучшими пожеланиями,
Эндрю

+0

Похоже, что с дальнейшим исследованием, если я физически определю RewriteRule, это сработает, но ошибки с ошибкой не пройдут. Например, это работает «RewriteRule ^/user/login $ /index.php/user/login [PT, QSA, L]», но это не работает «RewriteRule^(. *) $ /index.php$1 [PT, QSA, L],» –

ответ

0

После многих проб и ошибок, я обнаружил, что рабочий RewriteRule должен быть следующим:

RewriteRule ^.*$ /index.php$1 [PT,QSA,L] 

Тогда в PHP Мне нужно использовать $ _SERVER [ 'REQUEST_URI'] вместо $ _SERVER ['PATH_INFO'], чтобы убедиться, что мой PHP-скрипт видит переданный в URI.