.htaccess, переписать ВСЕ PHP Vars в папки - PullRequest
2 голосов
/ 18 февраля 2012

У меня есть эта проблема.Я хочу записать ВСЕ мои php переменные в папки.Например:

www.mypage.com/en/shows/1/ до

www.mypage.com/index.php?language=en&section=shows&item=1

или

www.mypage.com/en/home/ до

www.mypage.com/index.php?language=en&section=home

Вот что я получил:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*)/(.*)/$ index.php?language=$1&section=$2
RewriteRule (.*)/(.*)/(.*)/$ index.php?language=$1&section=$2&item=$3

Он отлично работает с www.mypage.com/en/home/ до

www.mypage.com/index.php?language=en&section=home

, но когда я пытаюсь с www.mypage.com/en/shows/1/до

www.mypage.com/index.php?language=en&section=shows&item=1

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

Спасибо за ваше терпение, я полный новичок.Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2012

Попробуйте вместо этого

Options +FollowSymLinks
RewriteEngine on
RewriteBase / 

RewriteRule ^([a-zA-Z]{2})/(\w+)/$ index.php?language=$1&section=$2 [L]
RewriteRule ^([a-zA-Z]{2})/(\w+)/(\d+)/$ index.php?language=$1&section=$2&item=$3 [L]

Я предполагаю, что двухзначный код языка

0 голосов
/ 18 февраля 2012

Я думаю, что главная проблема в том, что ваш первый RewriteRule всегда будет совпадать вместо вашего второго. Нечто, совпадающее с (.*)/(.*)/(.*)/$, всегда будет совпадать и с (.*)/(.*)/$, потому что последнему все равно, что предшествует этому.

В идеале, вы бы хотели поставить ^ в начале, чтобы остановить это, но если вы не можете или не работаете, вы всегда можете попробовать просто поменять правила так, чтобы получился тот, у которого три области шанс совпадать первым. И хотя переписывание должно препятствовать сопоставлению второго правила, было бы неплохо добавить [L] после них обоих, если только у вас нет другой причины. [L] означает, что если он совпадает, он не будет пытаться сопоставить другие правила.

...