Στο CakePHP, είναι δυνατόν να έχουμε εσωτερικά και εξωτερικά δρομολόγια;

ψήφοι
1

Η εφαρμογή Facebook φιλοξενείται σε server μου, ας πούμε, http://server.com/projects/fbapp/ , αλλά θεωρείται μόνο ποτέ στο Facebook σε, για παράδειγμα, http://apps.facebook.com/fbapp/ .

Χρησιμοποιώντας CakePHP αυτό αποτελεί πρόβλημα - θα πρέπει δρομολόγια να το πρόθεμα «/ έργο / fbapp» ή απλά «fbapp»;

Είναι ένα πρόβλημα, διότι οι διαδρομές που χρησιμοποιούνται όχι μόνο για τη δρομολόγηση των εισερχόμενων αιτήσεων, αλλά και για τη δημιουργία συνδέσμων (και αποτελούν ενέργειες κλπ).

Ως kludge, έχω τώρα δύο δρομολόγησης εντολών ανά διαδρομή:

Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
Router::connect('projects/fbapp/pages/*', array('controller' => 'pages', 'action' => 'display'));

Με το πρώτο δεν απαιτείται πρόθεμα λόγω της γραμμής που έχω περιλαμβάνονται στο bootstrap.php:

Configure::write('App.base', '/fbapp');

Που ξεκινά κατά τη διάρκεια αντίστροφη δρομολόγησης εργασιών.

Η ερώτησή μου είναι αν υπάρχει ένας πιο κομψός τρόπος για να γίνει αυτό; Αυτό φαίνεται πολύ άσχημο και είμαι σίγουρος ότι δεν είναι πολύ ανομοιόμορφη.

Δημοσιεύθηκε 13/05/2009 στις 00:16
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
1

Διασχίστε την ανάρτηση του σχολίου μου από αίτημα:

Δεν θα ήταν μια (apache) ξαναγράψει της κυκλοφορίας από το facebook είναι η πιο κομψή λύση; εσωτερική μηχανή σας θα πρέπει μόνο να ασχοληθεί με ένα μονοπάτι, και αν ήθελε να ενσωματώσει την εφαρμογή με άλλη υπηρεσία / πλατφόρμα σε μεταγενέστερη ημερομηνία, θα πρέπει μόνο να προσθέσετε ένα άλλο κανόνα επανεγγραφής και όχι μπέρδεμα με την ίδια την εφαρμογή.

Απαντήθηκε 18/05/2009 στις 03:44
πηγή χρήστη

ψήφοι
1

Θα πρέπει να πάει, με βάση Ρωτήστε Apache και κάποιους κανόνες έχω βάλει στη θέση του μερικά παλιά έργα. Νομίζω ότι βάζοντας στο αρχείο .htaccess στο Webroot σας θα κάνει το κόλπο (αλλά αυτό είναι μια εικασία).

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} ^/projects/fbapp/pages.*
RewriteRule ^/projects/fbapp/pages/(*)$ /pages/$1 [L]

Το παραπάνω θα πρέπει (αν το έκανα σωστά) ξαναγράψει κάθε αίτημα που ταιριάζουν http://server.com/projects/fbapp/pages/ * να http://server.com/pages/ * δηλαδή http://server.com/ έργα / fbapp / σελίδες / foo => http://server.com/pages/foo .

Επεξεργασία Βρέθηκαν αυτό δημοσιεύτηκε στο τμήμα Apache.

Απαντήθηκε 18/05/2009 στις 21:38
πηγή χρήστη

ψήφοι
1

Δεν χρειάζεται να κάνετε τίποτα καθόλου! Cake θα αναλάβει τη φροντίδα του URL βάσης για εσάς, έτσι ώστε να μην χρειαστεί να επαναλάβει τα δρομολόγια, ούτε να φροντίσει το URL βάσης. Τι πρέπει να κάνετε είναι να διαδρομή σχετική διεύθυνση URL σας αντί να χρησιμοποιήσετε projects/fbapp/, ή ό, τι πρόθεμα που θέλετε να χειριστείτε:

Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

Αυτό είναι το πώς θα χειριστεί όλες τις αιτήσεις στην εφαρμογή μου, που έχω αναπτύξει κάτω http://www.example.com, ενώ σε τοπικό επίπεδο το έχω κάτω http://localhost/workspace/example.com/trunk/deploy. Λειτουργεί σαν μια γοητεία και στα δύο περιβάλλοντα.

Απαντήθηκε 22/05/2009 στις 17:45
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more