простые (?) проблемы с переписыванием htaccess - PullRequest
1 голос
/ 30 июля 2010

ОК, последние несколько дней я возился с переписыванием URL и, похоже, зашел в тупик. Я предложил несколько решений, которые работают на некоторых серверах, а не на других, и моя хостинговая компания (1 и 1 - будьте осторожны с этими парнями, если вы выберете их в качестве хостов) вообще не смогла помочь.

Моя проблема в том, что я хочу переписать этот URL:

/result.php?section=[section name]&url=[url]

к этому (добавляя косую черту, если ее нет):

/article/[section name]/[url]/

и ТАКЖЕ

section.php?section=[section name]

к (снова добавляя косую черту):

/section/[section name]/

Кажется, что каждая попытка имеет разные результаты. В настоящее время я использую следующее, которое работает локально, но на живом сервере работает только перезапись статей:

RewriteRule ^article/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /article/$1/$2/
RewriteRule ^article/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ /result.php?section=$1&url=$2

RewriteRule ^section/([a-zA-Z0-9_-]+)$ /section/$1/
RewriteRule ^section/([a-zA-Z0-9_-]+)/$ section.php?section=$1

Может ли кто-нибудь помочь мне найти решение, которое будет хорошо работать? Заранее спасибо, я действительно борюсь с тем, что кажется чем-то относительно простым ...

1 Ответ

3 голосов
/ 30 июля 2010

Во-первых, для того, чтобы завершить обратную косую черту, вам нужно будет сделать перенаправление ...

RewriteRule ^article/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /article/$1/$2/ [R=302,L]
RewriteRule ^section/([a-zA-Z0-9_-]+)$ /section/$1/ [R=302,L]

Примечание: Я использую 302, потому что 301 может быть проблемой во время тестирования, если все работает, и вы довольны этим, измените его на 301.

Два оставшихся правила - это переписанные выражения, которые просто маскируют / псевдоним URL-адреса query_string, который должен выглядеть примерно так ...

RewriteRule ^article/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ /result.php?section=$1&url=$2
RewriteRule ^section/([a-zA-Z0-9_-]+)/$ /section.php?section=$1
...