Срыв проблемы с перезаписью URL .htaccess - PullRequest
1 голос
/ 18 марта 2012

Я работаю с клиентом, и мы только что перевели его сайт с Godaddy (ew!) На Pair Networks.Я использовал пару лично и для клиентов в течение многих лет и имел большой опыт работы с ними.К сожалению, из-за этой проблемы, поскольку это план общего хостинга, техническая поддержка по переписыванию URL-адресов не входит в план поддержки.

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

RewriteEngine On
RewriteRule ^((images|styles|scripts|documents)/*.*)$ $1 [L]
RewriteRule ^(admin/*)$ index.php/$1 [L]
RewriteRule ^([a-zA-Z0-9]+)$ page/id/$1
RewriteCond $1 !^(index\.php|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ index.php/$1 [L]

Ошибка по Apache - слишком много перенаправлений, что приводит к отображению ошибки 500.Если я закомментирую это:

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

Тогда страница по умолчанию загружается (index.php устанавливает значение по умолчанию, если ни один не указан в URL), но тогда ни одна из других страниц не может загрузиться.Мне пришлось вручную добавлять записи для каждого формата URL в .htaccess, чтобы поддерживать работоспособность сайта, в результате чего:

RewriteEngine On
RewriteRule ^((images|styles|scripts|documents)/*.*)$ $1 [L]    
RewriteRule ^(admin/*)$ index.php/$1 [L]
RewriteRule ^(admin/([a-zA-Z0-9]+))$ index.php/$1 [L]
RewriteRule ^(admin/([a-zA-Z0-9]+)/([a-zA-Z0-9]+))$ index.php/$1 [L]
RewriteRule ^(page/id/*)$ index.php/$1 [L]
RewriteRule ^(page/submit)$ index.php/page/submit [L]
RewriteRule ^([a-zA-Z0-9]+)$ index.php/page/id/$1
RewriteCond $1 !^(index\.php|robots\.txt|favicon\.ico)
#RewriteRule ^(.*)$ index.php/$1 [L]

Сайт использует Codeigniter, поэтому ожидаемый окончательный переписанный формат URL будет следующим: http://server/index.php/page/id/example для загрузки http://server/example.

У меня был другой клиент на серверах Pair, использующий точно такую ​​же CMS и тот же оригинальный .htaccess в течение примерно 6 лет без проблем, поэтому я немного ошеломлен тем, почемуэто внезапно вызовет проблемы.Они оба даже используют одну и ту же версию Apache и PHP (2.2.22 и 5.3.8 соответственно).

У кого-нибудь есть идеи по поводу этой проблемы?Я бы предпочел, чтобы не нужно было вручную определять все маршруты, подобные этой.

1 Ответ

3 голосов
/ 18 марта 2012

Мы годами использовали очень похожий набор правил без проблем. За исключением того, что у нас есть два правила RewriteCond перед этой строкой, чтобы проверить, что запрос не для файла или каталога:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...