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 siniSaya cuba seperti berikutvue 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
可以正常運(yùn)行,點(diǎn)擊各個鏈接也是可以正常跳轉(zhuǎn),因為html5的histroy模式只是在瀏覽器段改變了url地址欄,并沒有向server請求數(shù)據(jù),但是當(dāng)用戶直接用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>
Tetapi ia tidak berkesan, tidak tahu mengapa?
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
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