javascript - masalah penulisan semula htaccess
phpcn_u1582
phpcn_u1582 2017-05-16 16:57:11
0
2
484

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

membalas semua(2)
为情所困

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan