2011-12-26 95 views
0

這是我整個的.htaccess:.htaccess:如何處理RewriteRule中的斜槓(/)?

RewriteEngine On 
RewriteBase /~user/sitetest/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+?)/?$ view.php?id=$1 

當我訪問http://localhost/~user/sitetest/abc123,它加載$ _GET [ 「身份證」]值,一切工作正常。這個棒極了!

但我想它在http://localhost/~user/sitetest/view/abc123(通知 「視圖/」)工作

所以我試着用替換RewriteRule

RewriteRule ^view/(.+?)/?$ view.php?id=$1 

,但無濟於事!它似乎沒有從view.php加載$ _GET []。我甚至嘗試呼應了$ _GET []的價值,但它爲空白顯示出來,當我訪問http://localhost/~user/sitetest/view/abc123

所以我編輯它,看看這會工作:

RewriteRule ^view-(.+?)/?$ view.php?id=$1 

當我訪問http://localhost/~user/sitetest/view-abc123它(注意「 - 」而不是「/」)

那麼它與斜槓有什麼關係?我迷路了,一直在努力弄清楚這一點。

編輯:

我仍然有問題,但我注意到,當我嘗試:

RewriteRule ^test/(.+)/?$ view.php?id=$1 

而且訪問http://localhost/~user/sitetest/test/abc123它的工作! 所以似乎與「view.php」和「view /」有衝突......所以在最壞的情況下,我會重命名view.php。但我仍然想弄清楚究竟發生了什麼問題。

回答

1

view在請求的url中與view.php文件衝突,如果MultiViews被啓用。

在您的htaccess中將其與Options -MultiViews一起關閉。

0

我認爲這就是你正在使用(.+?) - 嘗試使用剛剛(.+)

+0

剛剛給了這一槍,可悲的是,它沒有奏效。 – Aaron 2011-12-26 18:56:15

+0

啊,對不起。否則,我看不出有什麼問題。 – 2011-12-26 19:06:08

+0

我編輯了我的主帖。也許它可能引發一個想法? – Aaron 2011-12-26 19:07:59

-1

可以躲過鑑於這樣的觀點後斜線/但我不知道是否能解決問題,斜線路徑分隔符。所以我想你想實現會更好一些規則是這樣做的:

RewriteRule ^(.+\/)(.+\/)$ page.php?p=$1&id=$2 

,然後你包括你的page.php文件頁面,一個簡單的PHP包括:($ _ GET [「P」] );

+1

'/'在RegEx中不是保留字符! – Gerben 2011-12-26 19:26:19

+0

同意:)對不起,無論如何,我不認爲路徑部分可以成功作爲mod_rewrite中的正則表達式匹配變量傳遞,是嗎? – 2011-12-26 20:06:07