我想編寫一個重寫規則來執行以下操作:如果服務器上存在以下任何文件作爲特定目錄中的靜態html文件,那麼我希望.htaccess提供該靜態文件。否則,我想的ID(後第一號的的.com/和前第一個連字符),以作爲查詢參數傳遞給www.gallery.com/index.php
在.htaccess中使用重寫mod
重定向應該發生的,如果下面的網址不作爲靜態HTML頁面存在。
www.gallery.com/2-swimming.html
www.gallery.com/2
gallery.com/2
下面是我的整個.htaccess文件
<Files .htaccess>
order allow,deny
deny from all
</Files>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENANE} !-f
RewriteCond %{REQUEST_FILENANE} !-d
RewriteRule ^([0-9]+)-(.*)\.html$ /index.php?id=$1 [L]
</IfModule>
有什麼毛病我改寫的條件。(我有一個困難時期)。還有什麼是一個有效的方式來抓住重定向的id incase。
只有當用戶嘗試點擊'.html'地址時,您的重寫小程序纔會啓動,因此您的'gallery.com/2'永遠不會匹配:地址中沒有'.html'和'-'。 –
如何修復'gallery.com/2'和'gallery.com/2-word1-word2.html' – user2726883
2-word1-word2會重寫,因爲'2'會匹配'([ 0-9] +)'部分,'word1-word2'會被'(。*)'抓住。看起來你只關心地址開頭的實際NUMBER,爲什麼不用'Rewriterule ^([0-9] +)/index.php?id = $ 1'來代替呢?這隻會捕獲數量而忽略其他的一切。 –