Назад | Перейти на главную страницу

Apache + Codeigniter + новый сервер + непредвиденные ошибки

Хорошо, вот ситуация: я использовал свой сайт codeigniter на bluehost, где у меня не было root-доступа, с тех пор я переместил этот сайт в rackspace. Я не менял код PHP, но возникло неожиданное поведение.

Неожиданное поведение:

http://mysite.com/robots.txt И старое, и новое разрешение файла robots

http://mysite.com/robots.txt/ Старая установка bluehost разрешает мою страницу ошибки codeigniter 404. Конфигурация стойки разрешает: не обнаружена Запрошенный URL /robots.txt/ не найден на этом сервере.

** Этот случай наводит меня на мысль, что может быть проблема с переписыванием моих модов или их отсутствием. Первый правильно выдает ошибку через php, в то время как кажется, что второй senario позволяет серверу обрабатывать эту ошибку.

Следующий пример этой проблемы вызывает еще большее беспокойство: 'http://mysite.com/search/term/9 x 1-1% 2F2 белый / '

Новый сайт приводит к: Плохой запрос Ваш браузер отправил запрос, который этот сервер не может понять.

Результат на старом сайте: Фактическая загружаемая страница и некодированный поисковый запрос.

Я должен предположить, что это как-то связано с тем фактом, что когда я перешел на новый сервер, я перешел от файла htaccess корневого уровня к файлу httpd.conf и виртуальному серверу default и default-ssl. Они здесь:

Файл по умолчанию:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName mysite.com
DocumentRoot /var/www
<Directory />
    Options +FollowSymLinks
    AllowOverride None
</Directory>

<Directory /var/www>
    Options -Indexes +FollowSymLinks -MultiViews
    AllowOverride None
    Order allow,deny
    allow from all

    RewriteEngine On
    RewriteBase /

    # force no www. (also does the IP thing)
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} !^mysite\.com [NC]
    RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L]

    # index.php remove any index.php parts
    RewriteCond %{THE_REQUEST} /index\.(php|html)
    RewriteRule (.*)index\.(php|html)(.*)$ /$1$3 [r=301,L]


RewriteCond $1 !^(index\.php|assets|robots\.txt|sitemap\.xml|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

Файл Default-ssl В основном то же, что и файл по умолчанию выше, используемый только для обработки порта ssl.

Файл httpd.conf Просто много всего из котельной html5, выложу, если будет

Старый файл htaccess

<IfModule mod_rewrite.c>

# index.php remove any index.php parts
RewriteCond %{THE_REQUEST} /index\.(php|html)
RewriteRule (.*)index\.(php|html)(.*)$ /$1$3 [r=301,L]

RewriteCond $1 !^(index\.php|assets|robots\.txt|sitemap\.xml|favicon\.ico)
RewriteRule ^(.*)/$ /$1 [r=301,L]

RewriteCond $1 !^(index\.php|assets|robots\.txt|sitemap\.xml|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

Это перенаправление, отвечающее за направление каждого запроса к файлу index.php для начала ... вот где, я думаю, проблема (может быть, что-то связано с каталогом? Может быть, что-то с моей конфигурацией apache?

RewriteCond $ 1! ^ (Index.php | assets | robots.txt | sitemap.xml | favicon.ico)

RewriteRule ^ (. *) $ /Index.php/$1 [L]

Любая помощь будет очень признательна!