2012-12-06 20 views
2

我試圖建立一個htaccess文件,顯示一個空白的URI或數字段落(頁)上的索引文件,如:example.com或example.com/12(後面的附加?頁面= $ 1)htaccess頁碼

但是,當訪問任何非數字slu it時,它應該去不同的頁面。出於某種原因,我無法讓它打到索引文件(即使是空白或數字)。我錯過了什麼?

這是我有:

Options All 
RewriteEngine On 

RewriteRule ^([0-9]*)/?$ index.php?page=$1 [L] 
RewriteRule ^([^/]+)/?$ another_page.php?slug=$1 [L] 

如若不是空白URI或數字URI碰到的第一個規則,用最後的標誌,和負載的index.php?我提出的每個要求都是打到another_page.php

謝謝!

+0

我也嘗試在最後一行之前添加「RewriteCond%{REQUEST_FILENAME}!-f」和「RewriteCond%{REQUEST_FILENAME}!-d」,認爲會停止某種遞歸 - 無濟於事。 – Harry

+0

我不知道它是否不喜歡你的正則表達式開頭的'^',因爲它實際上並不是在尋找行首? – akronymn

+0

你的目標應該是儘可能嚴格地表達你的表情。就目前來看,你目前的規則很薄弱。 –

回答

1

啊哈,我在發佈這個問題後不久就想到了。

我確實需要最後的RewriteCond行,但原始文件也必須存在。我在創建index.php文件之前設置了這個htaccess文件(我正在尋找一個404)。

這是什麼工作:

Options All 
RewriteEngine On 

RewriteRule ^([0-9]*)/?$ index.php?page=$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/?$ another_page.php?slug=$1 [L] 

謝謝你們!