javascript - problème de réécriture htaccess
phpcn_u1582
phpcn_u1582 2017-05-16 16:57:11
0
2
481

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_u1582
phpcn_u1582

répondre à tous(2)
为情所困

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é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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal