2010-04-09 24 views
0

我最後的職位是由虛情假意,無益的「答案」(評論)相遇,所以我會馬上給它:如何區分變量請求中的文檔請求?以及如何允許預期不到的網址?

,如果我有一個htaccess文件,像這樣:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 
RewriteRule ^([^/]+)/([^/]+)$ /index.php?page=$1&subject=$2 
RewriteRule ^([^/]+)$ /index.php?page=$1 [L] 

怎麼可以允許其他URL變量名和值進行處理......說比如我要添加額外的意外網址瓦爾此方案

/page/subject?urlvar1=value1&urlvar2=value2 

得到我想要的頁面,而無需創建意外的結果?

任何真正的幫助,不勝感激。謝謝!

+0

重複的問題將收集緊密的投票,並可能downvotes。這個比你原來的問題簡潔得多,所以我建議你刪除第一個。 – zombat 2010-04-09 00:47:35

+0

酷,感謝您的提示...刪除。 – rodenbushdesign 2010-04-09 00:48:12

+0

你能說清楚...如果url變量是意外的,那麼怎麼纔能有一個正確的頁面發送給它?您能否提供一個意外請求的例子,以及您希望將它重定向到什麼位置? – 2010-04-09 00:54:30

回答

2

您需要將[QSA](查詢字符串附加)標誌添加到您的規則中。

作爲一般的建議,最好是隻有一個像

RewriteRule .* index.php?path=$0 

通用規則和解析PHP在水平的路徑。這更加靈活和透明。

闡述,這裏的全部設置

的.htaccess

Options +FollowSymLinks 

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* index.php?path=$0 [QSA] 

的index.php

<pre> 
<?php 
print_r($_GET); 
?> 
</pre> 

時調用像www.example.com/foo/bar/baz?quux=123&blah=456這種打印

Array 
(
    [path] => foo/bar/baz 
    [quux] => 123 
    [blah] => 456 
) 

唯一剩下的就是用爆炸或正則表達式解析$ _GET ['path']。

+0

好吧,現在就是我說的!謝謝你...所以我想,我也得到內部配置錯誤有以下幾點:!。 RewriteEngine敘述上 的RewriteCond%{} REQUEST_FILENAME -d 的RewriteCond%{} REQUEST_FILENAME \ PHP -f 重寫規則*的index.php ?路徑= $ 0 QSA] 重寫規則^(。*)$ $ 1.PHP [QSA] 的RewriteCond%{REQUEST_FILENAME} -f 重寫規則^ - [QSA] 重寫規則^([^ /] +)/([^/] +)$ /index.php?page=$1&subject=$2 [QSA] RewriteRule ^([^ /] +)$ /index.php?page=$1 [QSA,L] 你看到什麼了嗎?這個錯誤?提前致謝! – rodenbushdesign 2010-04-09 01:01:24

+0

+1 - 我不知道'[QSA]'標誌。我剛剛嘗試過,它的功能就像一個魅力。 – zombat 2010-04-09 01:02:40

+0

用於解析php而不是用htaccess搞亂+1。這就是我如何做到的,如果你需要在lighttpd或其他Web服務器上工作,那麼讓它工作起來會更容易。 – 2010-04-09 01:04:11