suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript – Problem beim Umschreiben von htaccess

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

in index.hml umgeschrieben werden

Das heißt, http://wwww.xxx.com/hot/item/1000 这样的url 解析到/hot/index.htmlAndere 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

Antworten Sie auf den Inhalt im ersten Stock, ich werde ihn auch hier veröffentlichen
vue läuft normal. Wenn der Verlaufsmodus aktiviert ist, geben Sie

eine 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.
http://www.xxx.com/hot可以正常运行,点击各个链接也是可以正常跳转,因为html5的histroy模式只是在浏览器段改变了url地址栏,并没有向server请求数据,但是当用户直接用 http://www.xxx.com/hot/item/1000

Ich habe es wie folgt versucht
<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?

phpcn_u1582phpcn_u15822743 Tage vor464

Antworte allen(2)Ich werde antworten

  • 为情所困

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

    对 thinkphp 不了解,可以看一下 thinkphp 的路由配置可否指定某一个目录不同的路由方案

    如果不行可能要用 nginx 了

    Antwort
    0
  • PHP中文网

    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 就可以正常访问了

    Antwort
    0
  • StornierenAntwort