Переписывание URL mod_rewrite - PullRequest
       0

Переписывание URL mod_rewrite

2 голосов
/ 27 августа 2011

У меня есть URL-адрес, такой как:

 page.com/content.php?xname=p&yname=q&zid=1

Я хочу переписать этот URL-адрес, используя apache mod_rewrite, примерно так:

 page.com/p/q/

обратите внимание, что не должно быть параметра 'zid'в переименованном URL.Я знаю, что выражения передаются как GET в исходный URL.Можно ли переименовать, как указано выше.Если да, как этого добиться?

Ответы [ 3 ]

2 голосов
/ 27 августа 2011

Это работает нормально для меня и перезапишет запрос для /p/q/ в /content.php?xname=p&yname=q&zid=1.

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/$ content.php?xname=$1&yname=$2&zid=1 [QSA,L]
  1. Это правило должно быть помещено в .htaccess в корневой папке сайта,При размещении в другом месте может потребоваться небольшая настройка.

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

1 голос
/ 27 августа 2011
RewriteRule   ^content\.php\?xname=(p)&yname=(q)&zid=1$    /$1/$2  [R]

Вместо p и q вы можете использовать выражения типа [a-Z0-9 _-] + для сопоставления идентификаторов.

Здесь есть инструмент для онлайн-тестирования: http://civilolydnad.se/projects/rewriterule/

0 голосов
/ 27 августа 2011
RewriteEngine On
RewriteRule ^/[a-z0-9]+/[a-z0-9]+/$ content.php?xname=$1&yname=$2 [L]
...