2009-05-06 63 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)中指示没有前导/。无论哪种方式,尝试使用和不使用/的规则,对我来说,它只有没有工作。