Apache переписать правила для создания удобных URL - PullRequest
0 голосов
/ 31 марта 2012

Я новичок в переписывании и не могу заставить работать следующее. (Ясно, что мой домен не является тестовым сайтом, но я не хочу, чтобы мой публичный сайт стал общедоступным, поскольку он еще не закончен.)

я хочу переписать тестовый сайт / fishing / region / region.php? Region = fife

до:

тестовый сайт / рыбалка / fife.php

затем хотите переписать тестовый сайт / рыболовство / регион / рыболовство / рыболовство.php? Url = goldenloch

до

тестовый сайт / рыбалка / дудка / goldenloch.php

Я использую следующие правила

    RewriteRule ^fishing/([^/]*)\.php$ /fishing/region/region.php?region=$1 [L]
    RewriteRule ^fishing/([^/]*)/([^/]*)\.php$ /fishing/region/fishery/fishery.php?url=$2&region=$1 [L]

каждое правило работает само по себе, но когда объединено только последнее действие. Я добавил флаг [L], который, по моему мнению, должен прекратить выполнение любых других правил перезаписи условия. однако это все еще не работает.

Ответы [ 2 ]

0 голосов
/ 13 апреля 2012

Оказывается, мне нужно было сделать

    RewriteRule ^fishing/([^/]*)/([^/]*) fishery.php?url=$2&region=$1 [L]
    RewriteRule ^fishing/([^/]*) region.php?region=$1 [L]

сначала с более длинным запросом, и он работал нормально.

0 голосов
/ 31 марта 2012

Я попробовал это, и это, похоже, сработало:

RewriteRule ^/fishing/([^/]*)\.php$ /fishing/region/region.php?region=$1 [R,L]
RewriteRule ^/fishing/([^/]*)/([^/]*)\.php$ /fishing/region/fishery/fishery.php?url=$2&region=$1 [R,L]

Единственное отличие от вашего (я думаю) - это ведущий /, и я использовал перенаправления (R) только для того, чтобы увидеть, что это былоза работой.Вы должны иметь возможность удалить R, чтобы пользователь не видел реальный URL в своем браузере.

На всякий случай, если вы этого не сделаете, я бы порекомендовал использовать инструмент командной строки (например, curl), а не браузер для проверки этого, просто чтобы избежать кеширования или других неприятностей:

curl -vv 'http://localhost/fishing/fife/goldenloch.php'

Вы увидите заголовок Location в ответе сервера, это перенаправление на работе.В моем случае я вижу:

Location: http://localhost/fishing/region/region.php?region=fife

и

Location: http://localhost/fishing/region/fishery/fishery.php?url=goldenloch&region=fife
...