我有個thinkphp開發的網站,企用了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>
也就是說要把
http://wwww.xxx.com/hot/item/1000 這樣的url 解析到
/hot/index.html
上,
其它還是用thinkphp來控制,
這樣的url來訪問的時個,由於server上並沒有這個文件所以不會正常返回,但是通過apache的htaaccess文件可以把用戶訪問不存在的文件跳轉到指定的檔案上,就如我上面貼的thinkphp下的設定檔就是起這個作用,我現在的要求是把在/hot目錄下的請求不要轉發給thinkphp來執行,而是轉發個/hot/ index.html來處理。
回覆一樓的內容,我也貼一下這裡vue 運行也是正常的,在開啟histroy 模式下,你進入
http://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>
但是不起作用,不知道為什麼? ###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/ [QSA,PT,L]
</IfModule>
測試位址: http://www.wx2share.com/hot/
如果不做url rewrite 直接透過 以上網址進入,一切功能也是正常的,
但是如果透過以下網址進入
http://www.wx2share.com/hot/i...
就會回傳 404,但是做了 url rewrite 就可以正常訪問了