Maison  >  Questions et réponses  >  le corps du texte

javascript - problème de réécriture htaccess

J'ai un site Web développé par thinkphp et j'utilise mod rewrite

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On
  
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f

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

</IfModule>

thinkphp et le programme fonctionnent normalement. Maintenant, mon exigence est de mettre un petit programme développé par vue dans le répertoire chaud du répertoire racine du site Web et d'activer le mode de routage historique
Selon la documentation de développement, afin de créer. tous les chemins Il peut être reconnu par le serveur et tous les accès doivent être réécrits dans index.hml via RewriteRule

C'est-à-dire que http://wwww.xxx.com/hot/item/1000 这样的url 解析到/hot/index.html doit être téléchargé.
Les autres doivent être contrôlés par thinkphp
J'ai essayé de nombreuses configurations mais rien ne fonctionne. Je ne connais pas les commandes de fichiers .htaccess, donc j'espère que tout le monde pourra me donner une solution

.

Répondez au contenu du premier étage, je le posterai également ici
vue fonctionne normalement Lorsque le mode historique est activé, lorsque vous entrez http://www.xxx.com/hot可以正常运行,点击各个链接也是可以正常跳转,因为html5的histroy模式只是在浏览器段改变了url地址栏,并没有向server请求数据,但是当用户直接用 http://www.xxx.com/hot/item/1000 une telle URL pour y accéder, car il n'y a pas de tel fichier sur le serveur. , il ne reviendra pas normalement, mais via le fichier htaaccess d'Apache, les utilisateurs peuvent accéder à des fichiers qui n'existent pas et accéder au fichier spécifié. Tout comme le fichier de configuration sous thinkphp que j'ai publié ci-dessus joue ce rôle, mon exigence actuelle est de le mettre. dans le répertoire /hot Ne transférez pas la requête à thinkphp pour exécution, mais transmettez-la à /hot/index.html pour traitement.

J'ai essayé comme suit

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On
  
  RewriteCond %{REQUEST_URI} ^/(hot|hot/.*)$
  RewriteRule ^/hot/index\.html$ - [L]

  RewriteRule ^(hot|hot/.*)$ hot/index.html$ [L]

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  #RewriteRule ^hot/(.*)$ hot/index.html$
  #RewriteRule ".?" "-" [S=1]
  #RewriteRule ^/(hot|hot/.*)$ /hot/index.html$ [L]
  RewriteRule ^(.*)$ index.php/ [QSA,PT,L]

</IfModule>

Mais ça ne marche pas, tu ne sais pas pourquoi ?

phpcn_u1582phpcn_u15822713 Il y a quelques jours427

répondre à tous(2)je répondrai

  • 为情所困

    为情所困2017-05-16 16:59:11

    Si vous ne savez pas grand-chose sur thinkphp, vous pouvez consulter la configuration de routage de thinkphp pour voir si vous pouvez spécifier différents schémas de routage pour un certain répertoire

    Si cela ne fonctionne pas, vous devrez peut-être utiliser nginx

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-16 16:59:11

    Résolu, mon idée originale était correcte, index.php qui était toujours analysé dans le répertoire personnel au début s'est avéré être mon problème de chemin de ressource de référence
    Publiez la configuration valide

    <IfModule mod_rewrite.c>
      Options +FollowSymlinks
      RewriteEngine On
      
      RewriteCond %{REQUEST_URI} ^/(hot|hot/.*)$
      RewriteRule ^/hot/index\.html$ - [L,NC]
      
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(hot|hot/.*)$ hot/index.html [L]
    
      RewriteCond %{REQUEST_URI} !^/(hot|hot/.*)$
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(.*)$ index.php/ [QSA,PT,L]
    
    </IfModule>

    Adresse de test : http://www.wx2share.com/hot/
    Si vous entrez directement via l'URL ci-dessus sans réécrire l'URL, toutes les fonctions seront normales,

    Mais si vous entrez via l'URL suivante
    http://www.wx2share.com/hot/i...
    , il renverra 404, mais après la réécriture de l'URL, vous pourrez y accéder normalement

    répondre
    0
  • Annulerrépondre