我有以下規則來工作,這組合:mod_rewrite的 - 麻煩的規則
- 只上存在
- 排除包含圖像的任何文件,文件行事|在他們的URI CSS | JS
- 附加斜線來請求URI
重寫規則:
RewriteEngine on
DirectorySlash Off
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/(images|js|css)$
RewriteRule ^(.*[^/.])$ /$1/ [R=301,L]
我現在需要正確地重定向我家的URI的,像這樣:
http://www.example.com/sitemap/
- >http://www.example.com/index.php?page=sitemap
我嘗試以下方法:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/.])$ index.php?page=$1 [R=301,L,NC]
但我得到一個頁面沒有找到,想必因爲$ 1正在餵食一些有斜線的東西。我認爲[^/]
會刪除它,但顯然不是。
有人可以解釋我哪裏錯了嗎?
爲什麼你需要**重定向**(URL將在瀏覽器中更改)?通常,人們希望保持「好」的URL,並在瀏覽器中URL保持不變時重寫URL(內部重定向)。那是故意的還是錯誤的(我指的是你的第二條規則 - 'R = 301'部分)? – LazyOne
這是一個錯誤,我對重定向位的工作原理有些朦朧。你說得對,我想保持漂亮的網址。 –