Maison > Questions et réponses > le corps du texte
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 entrezhttp://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 ?
为情所困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
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