Heim > Fragen und Antworten > Hauptteil
Ich habe eine von thinkphp entwickelte Website und verwende 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 und das Programm laufen jetzt normal. Meine Anforderung ist, dass ich ein von vue entwickeltes kleines Programm in das Hot-Verzeichnis des Website-Stammverzeichnisses lege und den Verlaufsrouting-Modus aktiviere.
Laut Entwicklungsdokumentation alle Pfade Es kann vom Server erkannt werden und alle Zugriffe müssen über RewriteRule
Das heißt, http://wwww.xxx.com/hot/item/1000
这样的url 解析到/hot/index.html
Andere sollten von thinkphp gesteuert werden.
Ich habe viele Konfigurationen ausprobiert, aber nichts funktioniert. Ich bin mit den Befehlen für .htaccess-Dateien nicht vertraut, daher hoffe ich, dass mir jeder eine Lösung geben kann
vue läuft normal. Wenn der Verlaufsmodus aktiviert ist, geben Sieeine solche URL ein, um darauf zuzugreifen, da es keine solche Datei auf dem Server gibt , es wird nicht normal zurückgegeben, aber über die htaaccess-Datei von Apache können Benutzer zu Dateien springen, die nicht vorhanden sind, und zur angegebenen Datei springen. Genau wie die Konfigurationsdatei unter thinkphp, die ich oben gepostet habe, ist es meine aktuelle Anforderung Es befindet sich im Verzeichnis /hot. Leiten Sie die Anfrage nicht zur Ausführung an thinkphp weiter, sondern leiten Sie sie zur Verarbeitung an /hot/index.html weiter.
Ich habe es wie folgt versuchthttp://www.xxx.com/hot
可以正常运行,点击各个链接也是可以正常跳转,因为html5的histroy模式只是在浏览器段改变了url地址栏,并没有向server请求数据,但是当用户直接用http://www.xxx.com/hot/item/1000
<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>
Aber es funktioniert nicht, Sie wissen nicht warum?
PHP中文网2017-05-16 16:59:11
解决了,原来的我想法是对的,一开始老是被解析到主目录的index.php原来是我的引用资源路径的问题
贴出有效 配置
<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/$1 [QSA,PT,L]
</IfModule>
测试地址: http://www.wx2share.com/hot/
如果不做url rewrite 直接通过 以上网址进入,一切功能也是正常的,
但是如果通过如下网址进入
http://www.wx2share.com/hot/i...
就会返回 404,但是做了 url rewrite 就可以正常访问了