web-dev-qa-db-fra.com

Problème de réécriture d'URL avec Cakephp

J'utilise le framework Cakephp 2.2.2

Je veux créer une URL personnalisée pour l'utilisateur si l'utilisateur saisit nom d'utilisateur = pragnesh, il pourra accéder à mon site comme http://pragnesh.mylocalhost.com identique à celui de blinksale.com


Mon URL http://mylocalhost.com/test/users/front_home

Je veux y accéder en tant que http://test.mylocalhost.com/users/front_home

Mon URL: http://mylocalhost.com/test/setting/pages
peut être accessible en tant que: http://test.mylocalhost.com/setting/pages

n'importe quelle URL: http://mylocalhost.com/test/xxxxx/xxxxx
peut être accessible en tant que: http://test.mylocalhost.com/xxxxx/xxxxx


OU


URL http://mylocalhost.com/users/front_home?site=test

Je veux y accéder en tant que http://test.mylocalhost.com/users/front_home

Mon URL: http://mylocalhost.com/setting/pages?site=test
peut être accessible en tant que: http://test.mylocalhost.com/setting/pages

n'importe quelle URL: http://mylocalhost.com/xxxxx/xxxxx?site=test
peut être accessible en tant que: http://test.mylocalhost.com/xxxxx/xxxxx


Ma question peut être une copie de https://stackoverflow.com/questions/20328636/my-cakephp-2-2-site-not-working-on-subdomain mais il n'y a pas de réponse postée

J'ai essayé ci-dessous le code dans \app\webroot.htaccess

https://stackoverflow.com/questions/5649890/htaccess-subdomai-part-2

RewriteCond %{QUERY_STRING} !^([^&]*&)*site=[^&]+
RewriteCond %{HTTP_Host} !^www\.mylocalhost.com
RewriteCond %{HTTP_Host} ([a-zA-Z0-9]+)\.mylocalhost.com
RewriteRule ^([^\.]*).php$ /$1.php?user=%1 [QSA,L,R]

https://stackoverflow.com/questions/25938781/url-rewrite-for-subdomain

# capture first part of Host name
RewriteCond %{HTTP_Host} ^([^.]+)\.mylocalhost\.com$ [NC]
# make sure site= query parameter isn't there
RewriteCond %{QUERY_STRING} !(^|&)site= [NC]
# rewrite to current URI?site=backererence #1 from Host name
RewriteRule ^ %{REQUEST_URI}?site=%1 [L,QSA]

mais les deux ne travaillent pas pour moi.

mon fichier .htaccss racine est

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule    ^$ app/webroot/    [L]
  RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

\ app.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>

\ app\webroot.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

Hôte virtuel dans httpd.conf

<VirtualHost *:80>  
   DocumentRoot "E:/xampp/htdocs/bsale"
   ServerName mylocalhost.com
   ServerAlias *.mylocalhost.com
   <Directory "C:/xampp/htdocs/bsale">
       Order allow,deny
       Allow from all
   </Directory>
</VirtualHost>

FILE de l'hôte

127.0.0.1   mylocalhost.com
127.0.0.1   *.mylocalhost.com
1
Pragnesh Chauhan

Ce que vous essayez de faire serait plus facile au niveau de l’application au lieu du niveau .hhtaccess. Ce que vous pouvez faire est de créer une seule application hébergée sur le serveur et chaque utilisateur a un enregistrement DNS dirigé vers cette application ...

exemple: l'application est hébergée sur le serveur 1.1.1.1.

La configuration DNS est ...

app-server    IN    A    1.1.1.1
user1         IN   CNAME app-server.domain.com
user2         IN   CNAME app-server.domain.com
user2         IN   CNAME app-server.domain.com

Cela permet de pointer tous les enregistrements DNS vers votre application. Dans votre application, vous détectez simplement le nom de domaine à l'aide de la fonction native dans la langue de votre choix. Le nom de domaine est ensuite renvoyé et votre application le gère comme vous le souhaitez. C’est ainsi que la plupart des systèmes dont vous parlez sont configurés et minimise les exigences de configuration car il vous suffit d’ajouter un nouvel enregistrement DNS chaque fois qu'un nouvel utilisateur est créé au lieu de devoir ajouter un nouvel enregistrement DNS ainsi qu’une nouvelle configuration vhost. seulement pour héberger un fichier htaccess. De plus, les réécritures d'URL dans Apache ne fonctionnent pas entre les domaines et serviront plutôt de redirection plutôt que de réécriture.

1
Chris Rutherfurd