Htaccess Codeigniter проблема - PullRequest
2 голосов
/ 12 мая 2011

Я использовал htaccess в своем проекте, который использует платформу Codeigniter:

DirectoryIndex index.php

RewriteEngine on

RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico) [NC]

RewriteCond %{REQUEST_FILENAME} !-f [NC]

RewriteCond %{REQUEST_FILENAME} !-d [NC]

RewriteRule ^(.*)$ ./index.php/$1 [NC,L,QSA]

Моя проблема заключается в том, что когда я вызываю службу PayPal, PayPal отвечает мнеПОЛУЧИТЕ url, вот так: http://xxx.xx.com/myproject/paypalCallback?tx=32J30607S6157364F&st=Pending&amt=85.00&cc=SGD&cm=&item_number=

Я получаю страницу 404 не найдена.Htaccess не принимает GET URL:? Tx = 32J30607S6 ... Я уверен, что он работает на локальной, но не на живой стороне

Если вы можете, пожалуйста, помогите мне.Спасибо

Ответы [ 6 ]

1 голос
/ 13 мая 2011

да, это работает в CI

вы все равно можете получить доступ к строке запроса, если они отключены в CI, попробуйте этот код

Чтобы удалить index.php из URL

RewriteEngine On

RewriteCond %{REQUEST_URI} ^system.*

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

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

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

если у вас есть приложение CI в подкаталогах, используйте это

RewriteBase /f2f/f2fweb
1 голос
/ 13 мая 2011

Вам необходимо включить строку запроса в application / config / config.php или включить '?'символ в $ config ['allow_uri_chars']

1 голос
/ 13 мая 2011

Одна вещь, которая может сработать, вы можете попробовать поместить простой php-файл в базовый каталог с именем paypalcallback.php или что-то в этом духе с помощью следующего кода:

$tx  = $_GET['tx'];
$st  = $_GET['st'];
$amt = $_GET['amt'];
... etc ...

header("location:/myproject/papalCallback/$tx/$st/$amt");
exit;

Он в основном читает строки запросаи преобразует в URL-сегменты.Обычно это проще, чем возиться со строками запроса и создавать необычные правила перезаписи.Я использую его для связи с менеджером изображений в CKeditor, потому что для него требуется переменная строки запроса в обратном вызове.

Я думаю, большая часть этого будет зависеть от того, имеет ли значение код заголовка http.

0 голосов
/ 16 декабря 2011

Следующие шаги работали для меня после поиска в течение нескольких часов:

  1. В приложении / config / config.php я использовал это изменение

      $config['enable_query_strings'] = TRUE;
      $config['index_page'] = "";
    
  2. In .htaccess

     RewriteEngine on
     RewriteCond $1 !^(index\.php|application|media|images|robots\.txt)
     RewriteRule ^(.*)$ /index.php?/$1 [L]
    
  3. В /system/libraries/URI.php

     Replace
    
        if ( ! preg_match("|^[".preg_quote($this->config->item('permitted_uri_chars'))."]+$|i", $str))
    
     With
    
        if ( ! preg_match("|^[".str_replace('\\-', '-', preg_quote ($this->config->item('permitted_uri_chars')))."]+$|i", $str))
    

Вот и все. Я взял одно из этих решений от http://dragffy.com/blog/posts/codeigniter-17-the-uri-you-submitted-has-disallowed-characters

0 голосов
/ 13 мая 2011

Во-первых, спасибо всем вам, друзья мои,

Я стараюсь следить за всеми вашими постами.И наконец, я нашел правильный путь для моего случая, это очень просто.Я изменяю файл htacces следующим образом:

RewriteRule ^(.*)$ ./index.php?/$1 [NC,L,QSA]

Видите ли, я вставляю '?'до '/'.Он примет мой URL ..paypalCallback /? Tx = 123213.

Это работа.Может быть, мне повезет ^^

В любом случае, спасибо за вашу помощь

Приветствия,

0 голосов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...