我創建與我要實現三樣東西一個htaccess:htaccess的行爲不象預期
- 刪除斜線
- 重定向是不是所有的請求
css
,ico
,jpg
,js
,php
或png
文件到index.php - 重定向所有文件view.php如果查詢字符串開頭不是
a
目前,它看起來像這樣
RewriteEngine On
RewriteBase /test/
RewriteRule ^(.*)/$ $1 [N] # remove trailing slash
RewriteCond %{REQUEST_URI} !\.(css|ico|jpg|js|php|png)$ # if it isn't one of the files
RewriteRule . "index.php" [L] # then redirect to index
RewriteCond %{QUERY_STRING} !^a($|&) # if query doesn't start with a
RewriteRule . "view.php" [L] # then redirect to view
這樣,下面的測試案例應該是真實的:
http://127.0.0.1/test/contact -> http://127.0.0.1/test/index.php
http://127.0.0.1/test/contact/ -> http://127.0.0.1/test/index.php
http://127.0.0.1/test/contact.png -> http://127.0.0.1/test/view.php
http://127.0.0.1/test/contact.png?a -> http://127.0.0.1/test/contact.png?a
當我嘗試這些出來this site,它表明我到底這些結果。
然而在實踐中,當我嘗試的URL,它完全打破:
http://127.0.0.1/test/contact -> http://127.0.0.1/test/view.php
http://127.0.0.1/test/contact/ -> Error 500
http://127.0.0.1/test/contact.png -> http://127.0.0.1/test/view.php
http://127.0.0.1/test/contact.png?a -> http://127.0.0.1/test/contact.png?a
看來,如果腳本總是在查詢相關的部分看起來第一,但考慮到這一點,但它仍然沒有按對我來說,/contact/
休息時間沒什麼意義。當我刪除與查詢有關的部分時,其餘的工作。
我忘了什麼嗎?有沒有關於我不知道的操作順序的規則?我有打字錯誤嗎?
所有的輸入讚賞!
P.S.我知道我必須添加一個以a
開頭的查詢,用於所有本地圖像,樣式表,腳本和AJAX調用。我這樣做是爲了當人們在單獨的標籤中查看媒體時,我可以創建一個花哨的頁面,讓人們瀏覽服務器上公開存在的所有媒體。
你能啓用和發佈的調試日誌重寫模塊([RewriteLog和RewriteLogLevel(https://httpd.apache.org/docs /2.2/mod/mod_rewrite.html#rewritelog)for apache 2.2, [LogLevel](https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging)for apache 2.4)? –