2009-02-15 48 views
2

我在.htaccess文件中的以下重寫規則:另一個mod_rewrite的斜線問題

RewriteEngine on 
RewriteRule ^news/([0-9]+)/?$ /?action=news&start=$1 [L] 
RewriteRule ^man/([a-zA-Z0-9_]+)/?$ /?action=man&page=$1 [L] 
RewriteRule ^([a-zA-Z0-9_]+)/?$ /?action=$1 [L] 

所有然後用/?結束檢查可選尾隨斜線。這是有效的 - 這意味着我可以使用http://www.site.com/news/http://www.site.com/news轉到news頁面,這正是我想要的。問題是,雖然http://www.site.com/news/工作正常,並默默重定向和所有有趣的東西,http://www.site.com/news由於某種原因明顯重定向到http://www.site.com/news/?action=news。他們都提出了相同的網站,但由於某種原因,如果我離開了尾部的斜線,網址會發生變化,看起來都很糟糕。

任何想法這是怎麼回事?我的.hyaccess文件中沒有其他規則。我還要指出,http://www.site.com/news/0http://www.site.com/news/0/不會遇到同樣的問題。他們兩人都無形中重定向到http://www.site.com/?action=news&start=0,這正是我想要的。這似乎只是第三條規則的問題。

如果它有幫助,該網站是在SourceForge.net。

回答

9

一個瘋狂的猜測:有一個名爲「news」的目錄,並且自動Apache目錄「添加一個尾部斜線」重定向正在踢入,並以奇怪的方式與您的RewriteRule進行交互。如果是這樣的話,

DirectorySlash Off 

可能會有所幫助。

+0

太棒了!謝謝。我不知道爲什麼會發生這種情況,但是Apache是​​一個複雜的程序,我願意把它寫下來,現在就修好了。 – 2009-02-15 09:42:23

0

也許MultiViews導致此行爲。嘗試禁用此選項:

Options -MultiViews 

另一種猜測:刪除前導斜槓的替換。