2009-05-06 6 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! –

+0

IDK, я сам это обсуждал, но я думаю, что это больше программирования, так как .htaccess - это больше программирования, чем sysadmin. – UnkwnTech

ответ

0

Я не совсем уверен, что это проблема, но помечать флаги как «[rn]» недействительны. Множественные флаги должны быть разделены запятыми, так что если вы пытаетесь поставить оба R и N флагов, он должен быть [R,N]

+0

Это не имело никакого значения, поскольку я обновлял сообщение, чтобы сказать, что перенаправление происходит, но я не получаю vars. – UnkwnTech

0

Есть несколько вещей, которые несколько неясные:

1) Что было предназначенный матч с регулярными выражениями части:

(.*?) 

это немного излишним - при условии, что вы просто хотите, чтобы соответствовать ничего между косым чертам, следующий будет достаточно:

(.*) 

2) Вы устанавливаете флаг 'rn', который не является действительным. Пример действительных флагов:

[R] 
[N] 
[R,N] 

, хотя, я не уверен, что вы действительно хотите использовать R и N вместе.

+0

(. *?) Явно не является жадным. В этом случае его высказывание дает мне все, что находится между «категорией /» и первым символом «/», который вы видите после этого. Если вы используете жадную версию, которую вы рекомендовали (. *), Вы могли бы захватить слишком много! Возьмем следующий пример URL «категория/Foo/бар /»: нежадным версия будет иметь $ 1 = «Foo» Жадный версия будет иметь $ 1 = «Foo/бар» Хотя _may_ быть хорошо в этот случай, чтобы уйти от жадной версии, я думаю, что не-жадный более ясен. –

+0

Ahh. Извините за форматирование. Я не знал, что комментарии не сохраняют пробелы. Я извиняюсь. –

1

Ну, для меня это работало. Похоже, что он не понравился ведущим /, а [rn] забросил синтаксические ошибки для меня.

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

Примечание: что это, вероятно, были [R,N] в любом случае, но опять же, они не нужны в данном случае.


RewriteRule Flags Documentation - показывает, почему вы, вероятно, не хотите использовать R или N, но может быть что-то мы не знаем.
RewriteRule Documentation - Кажется, не указывает ни одного ведущего / в .htaccess RewriteRules (если есть RewriteBase). В любом случае, попробуйте Правило с / и без него, для меня он работает только без него.

+0

Я скопировал и вставил, чтобы убедиться, что я ничего не опечатывал, и я все еще получаю ту же проблему ... – UnkwnTech

+0

Постарайтесь придумать это. Получите что-то работающее, а затем медленно сделайте его более сложным, слово за словом, чтобы узнать, что вызывает вашу проблему. –