2011-04-24 38 views
2

我用我的.htaccess一堆重寫規則的index.php文件,如這些得到與的.htaccess

RewriteRule ^brochure/([^/]+)/?$ brochure.php?cat_path=$1

這是所有偉大的工作,感謝的答案,我發現通過搜索這個網站。但我有一個小小的障礙。

這條規則的時刻 RewriteRule ^([a-zA-Z0-9_-]+)?$ $1.php它吸引我的所有URL像www.mysite.com/shane和requestes shane.php工作perfecty - 到目前爲止好,但是當我打電話www.mysite.com我需要它來請求index.php

我可以使用哪些規則這個?

謝謝大家。

更新 - 爲了將來的用戶需要類似的幫助。

我的規則^([a-zA-Z0-9_-]+)?$ $1.php導致了我上面提到的問題。在這種類型的規則中不需要問號?,當您刪除問號時,目錄中的index.php文件返回到默認登錄頁面。感謝Tomalak的幫助。

回答

0

你不需要任何規則。只要確保.php目錄的默認索引文件,它會自動發生。

更新

我認爲您的規則

^([a-zA-Z0-9_-]+)?$ $1.php 

其實應該

^([a-zA-Z0-9_-]+)$ $1.php 

,使其不與未給出文件名請求衝突(你想要指向index.php)。

+0

通常我的服務器上,'mysite.com'會要求的index.php或index.html,但是當我使用上述我的規則,它沒有更長的時間。這意味着你的建議不起作用,並給我一個404 – shane 2011-04-24 13:51:24

+0

@shane:使用'RewriteLog'並查看日誌文件。 – 2011-04-24 15:48:49

+0

等一下,你的規則不應該是'^([a-zA-Z0-9 _-] +)$ $ 1.php'嗎?你使用'?'似乎是錯誤的。 – 2011-04-24 15:49:24

0

我認爲這是你在找什麼,不知道心裏想:

RewriteRule ^/$ index.php 
+0

無論出於何種原因,當我使用我在OP中陳述的規則時,此規則不再起作用。通常的自動引用index.php或index.html也不是。不知道爲什麼。 – shane 2011-04-24 13:53:18

0

您可以做的託默勒格說,保證DirectoryIndex設置加載index.php

或接近到什麼詹姆斯說,

RewriteRule ^/?$ index.php [L] 
+0

無論出於何種原因,當我使用我在OP中陳述的規則時,此規則不再起作用。通常的自動引用index.php或index.html也不是。 – shane 2011-04-24 13:52:52

+0

@shane:這將是因爲排序,這將需要首先與您的規則,也刪除結束?',它使剩下的可選項,它允許它匹配空的情況,這就是上面所做的。 – Orbling 2011-04-24 15:56:17

+0

這工作,但Tomalak是關於錯過使用?的現場。他的回答允許我保存一行代碼。謝謝。 – shane 2011-04-24 17:44:45