代码之家  ›  专栏  ›  技术社区  ›  UnkwnTech

htaccess故障

  •  1
  • UnkwnTech  · 技术社区  · 15 年前

    我有一个.htaccess文件,当我转到gotgage.local/category/gages/时,该文件的gages部分没有通过

    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 )
    

    从技术上讲,重定向是有效的,但是我没有得到vars下面的页面是正确的,从正确的页面转储是正确的,但是我的vars没有被传递。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Joseph Pecoraro    15 年前

    嗯,下面这些对我有用。好像不喜欢主角 / 以及 [rn] 为我抛出语法错误。

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

    注:应该是 [R,N] 无论如何,但在这种情况下,它们是不需要的。


    RewriteRule Flags Documentation -说明为什么你可能不想使用 R N ,但可能有些事情我们不知道。
    RewriteRule Documentation -似乎没有领先的迹象 / 在.htaccess rewriterules中(如果存在rewritebase)。不管怎样,不管有没有 / ,对我来说,只有没有。

        2
  •  0
  •   Chad Birch    15 年前

    我不完全确定这是问题所在,但把旗子放在 [rn] “无效。多个标志应该用逗号分隔,因此如果您试图将 R N 旗子,应该是 [R,N]

        3
  •  0
  •   johnvey    15 年前

    有两件事有些不清楚:

    1)与regex部分的预期匹配是什么:

    (.*?)
    

    这有点多余——假设您只想匹配斜杠之间的任何内容,那么以下内容就足够了:

    (.*)
    

    2)您设置了“rn”标志,但该标志似乎无效。有效标志的示例如下:

    [R]
    [N]
    [R,N]
    

    不过,我不确定你是否真的想同时使用r和n。