2010-11-15 69 views
1

我使用mod_rewrite將友好的URL(site.com/page/)轉換爲友好的腳本(?page = page)除了一件事情之外,這一切都很完美。如果你離開它的URL的尾部斜線,它會中斷並獲得404.mod_rewrite添加尾部斜槓時出現問題

我嘗試使用this post中的解決方案(稍作修改),但它似乎不工作。這裏的參考是我的.htaccess重寫;

<IfModule mod_rewrite.c> 
RewriteEngine On 

Options +FollowSymLinks 
Options +Indexes 
RewriteEngine On 
RewriteBase/

#force trailing slashes on real directories 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ $1/ [R] 
RewriteRule ^images - [L] 
RewriteRule ^([^/]*)/$ /?page=$1%{QUERY_STRING} [L] 

</IfModule> 

回答

2

所以,你要到最後/跳過你的目錄測試 - 因爲這是我猜 - 然後你需要修改:

RewriteRule ^([^/]*)/$ /?page=$1%{QUERY_STRING} [L] 

成以下兩種人 - 對付/和非斜槓​​的情況 - 或者只有一個

RewriteRule ^([^/]*)/?$ /?page=$1%{QUERY_STRING} [L] 

假設這就是你想要的。你propably希望多一點likeL

RewriteRule ^([^/.]+)/?$ /?page=$1&%{QUERY_STRING} [L] 

我還添加了一個& - 因爲我猜你需要這一點。

+0

太棒了,謝謝。看來最好的答案通常是最簡單的。是的,我剛剛忘記添加&符號,並沒有得到我測試任何額外參數的位置,再次感謝:) – Jesse 2010-11-15 22:21:40

+0

嗯 - 小警告 - HTML逃生者似乎已經放棄了前面的'\'反斜槓''點。這是爲了防止某些東西。在你的具體情況下,一個\ w或[a-zA-Z]而不是^否定可能實際上更安全。 – 2010-11-15 23:02:05