2009-05-06 77 views
1

我有這個.htaccess文件,這是不工作的,當我navegate到gotgage.local /類別/表/的該應變計部分不被傳遞htaccess的麻煩

RewriteEngine On 
RewriteRule  ^/category/(.*?)/$ category.php?p=$1 [rn] 

出於測試的目的category.php文件只是傾銷$ _POST,$ _GET和$ _SERVER 這是我看到,當我打開頁面。

GET 
Array () 
POST 
Array () 
SERVER 
Array (
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.59 Safari/525.19 
    [HTTP_ACCEPT_ENCODING] => gzip,deflate,bzip2,sdch 
    [HTTP_ACCEPT] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 
    [HTTP_CACHE_CONTROL] => max-age=0 
    [HTTP_ACCEPT_LANGUAGE] => en-US,en 
    [HTTP_ACCEPT_CHARSET] => ISO-8859-1,*,utf-8 
    [HTTP_HOST] => gotgage.local 
    [HTTP_CONNECTION] => Keep-Alive 
    [PATH] => /usr/local/bin:/usr/bin:/bin 
    [SERVER_SIGNATURE] => Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4.2 with Suhosin-Patch Server at gotgage.local Port 80 


    [SERVER_SOFTWARE] => Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4.2 with Suhosin-Patch 
    [SERVER_NAME] => gotgage.local 
    [SERVER_ADDR] => 192.168.0.180 
    [SERVER_PORT] => 80 
    [REMOTE_ADDR] => 192.168.0.196 
    [DOCUMENT_ROOT] => /home/gotgage/www/ 
    [SERVER_ADMIN] => [no address given] 
    [SCRIPT_FILENAME] => /home/gotgage/www/category.php 
    [REMOTE_PORT] => 56793 
    [GATEWAY_INTERFACE] => CGI/1.1 
    [SERVER_PROTOCOL] => HTTP/1.1 
    [REQUEST_METHOD] => GET 
    [QUERY_STRING] => 
    [REQUEST_URI] => /category/gages/ 
    [SCRIPT_NAME] => /category.php 
    [PATH_INFO] => /gages/ 
    [PATH_TRANSLATED] => /home/gotgage/www/gages/ 
    [PHP_SELF] => /category.php/gages/ 
    [REQUEST_TIME] => 1241579116 
    [argv] => Array 
     (
     ) 

    [argc] => 0) 

技術上重定向工作但是我沒有得到以下的頁面傾銷瓦爾是從正確的頁面正確的,但我的瓦爾不被通過。

+0

這屬於serverfault.com! – 2009-05-06 03:13:58

+0

IDK,我自己辯論過,但我認爲這是更多的編程,因爲.htaccess是更多編程,然後是系統管理員。 – UnkwnTech 2009-05-06 03:18:23

回答

0

我不完全確定這是問題所在,但將標記標記爲「[rn]」無效。多個標誌應以逗號分隔,所以如果你試圖把兩個RN標誌,它應該是[R,N]

+0

這沒有什麼區別,因爲我更新了帖子,說重定向正在發生,但我沒有得到變數 – UnkwnTech 2009-05-06 04:03:09

0

有跡象表明,有些不清楚有兩件事情:

1)什麼是意與之相匹配的正則表達式部分:

(.*?) 

這是一個有點多餘 - 假設你只是想匹配斜槓之間的任何東西,以下就足夠了:

(.*) 

2)您設置了一個'rn'標誌,該標誌看起來不是有效的。有效標誌的例子是:

[R] 
[N] 
[R,N] 

雖然,我不確定你是否真的想一起使用R和N.

+0

(。*?)顯然是非貪婪的。在這種情況下,它的意思是讓我知道「category /」和之後看到的第一個「/」字符之間的所有內容。如果你使用你推薦的貪婪版本(。*),那麼你可能會攫取太多! 看看下面的例子URL「類別/富/酒吧/」: 非貪婪的版本將有$ 1 =「foo」的 貪婪的版本將有$ 1 =「富/酒吧」 雖然_may_是好的這種情況下襬脫貪婪的版本,我認爲非貪婪更清晰。 – 2009-05-06 03:49:16

1

那麼,以下爲我工作。它看起來不像領先的/[rn]爲我輸入語法錯誤。

RewriteEngine On 
RewriteRule ^category/(.*?)/$ category.php?p=$1 

注意:它應該可能已經[R,N]反正,但同樣,在這種情況下是不需要的。


RewriteRule Flags Documentation - 說明爲什麼你可能不希望使用RN,但也有可能是一些我們不知道。
RewriteRule Documentation - 似乎在.htaccess RewriteRules(如果有RewriteBase)中指示沒有前導/。無論哪種方式,嘗試使用和不使用/的規則,對我來說,它只有沒有工作。