Rumah  >  Soal Jawab  >  teks badan

javascript - masalah penulisan semula htaccess

Saya mempunyai laman web yang dibangunkan oleh thinkphp dan saya menggunakan 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 dan program berjalan seperti biasa sekarang keperluan saya ialah saya meletakkan program kecil yang dibangunkan oleh vue dalam direktori panas direktori akar laman web dan menghidupkan mod penghalaan sejarah
Mengikut dokumentasi pembangunan, untuk membuat semua laluan Ia boleh dikenali oleh pelayan, dan semua akses mesti ditulis semula ke index.hml melalui RewriteRule

Maksudnya, http://wwww.xxx.com/hot/item/1000 这样的url 解析到/hot/index.html mesti dimuat naik
Yang lain harus dikawal oleh thinkphp
Saya telah mencuba banyak konfigurasi tetapi saya tidak biasa dengan arahan fail .htaccess, jadi saya harap semua orang boleh memberi saya penyelesaian

Balas kandungan di tingkat satu, saya juga akan siarkan di sini

vue berjalan seperti biasa Apabila mod sejarah dihidupkan, apabila anda memasuki
url sedemikian untuk diakses, kerana tiada fail sedemikian pada pelayan. , ia tidak akan kembali seperti biasa, tetapi melalui fail htaaccess Apache, pengguna boleh melompat ke fail yang tidak wujud dan melompat ke fail yang ditentukan Sama seperti fail konfigurasi di bawah thinkphp yang saya siarkan di atas memainkan peranan ini, keperluan semasa saya adalah untuk meletakkan ia dalam direktori /hot Jangan majukan permintaan untuk thinkphp untuk pelaksanaan, tetapi majukannya ke /hot/index.html untuk diproses. http://www.xxx.com/hot可以正常运行,点击各个链接也是可以正常跳转,因为html5的histroy模式只是在浏览器段改变了url地址栏,并没有向server请求数据,但是当用户直接用 http://www.xxx.com/hot/item/1000

Saya cuba seperti berikut

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

Tetapi ia tidak berkesan, tidak tahu mengapa?

phpcn_u1582phpcn_u15822713 hari yang lalu432

membalas semua(2)saya akan balas

  • 为情所困

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

    Jika anda tidak tahu banyak tentang thinkphp, anda boleh melihat konfigurasi penghalaan thinkphp untuk melihat sama ada anda boleh menentukan skema penghalaan yang berbeza untuk direktori tertentu

    Jika itu tidak berkesan, anda mungkin perlu menggunakan nginx

    balas
    0
  • PHP中文网

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

    Selesai, idea asal saya betul, index.php yang sentiasa dihuraikan ke direktori utama pada mulanya ternyata menjadi masalah laluan sumber rujukan saya
    Siarkan konfigurasi yang sah

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

    Alamat ujian: http://www.wx2share.com/hot/
    Jika anda masuk terus melalui URL di atas tanpa melakukan penulisan semula url, semua fungsi akan menjadi normal,

    Tetapi jika anda memasukkan melalui URL berikut
    http://www.wx2share.com/hot/i...
    , ia akan mengembalikan 404, tetapi selepas menulis semula url, anda boleh mengaksesnya seperti biasa

    balas
    0
  • Batalbalas