Mod_Rewrite: вставить «/» между переменными и значениями в URL - PullRequest
1 голос
/ 16 июля 2009

Я пытаюсь очистить полезные URL, используя mod_rewrite. Я уверен, что это распространенный вопрос, но я не так хорош с mod_rewrite:

У меня есть этот URL: http://mysite.com/user.php?user=fatcatmat&sort=popularv

Я хочу иметь возможность переписать это так:

http://mysite.com/user/user/fatcatmat/sort/popularv (Есть ли способ удалить дубликаты в URL?)

Думаю, мне удалось удалить расширение PHP.

RewriteRule ^(.*)\$ $1.php [nc]

Правильно ли это?

Для отдельных страниц у меня было бы что-то вроде этого.

RewriteRule ^/?user(/)?$ user.php

Основной вопрос : Немного утомительно делать все вышеперечисленное, но есть ли правило переписывания MEGA, которое просто помещает "/" между переменными и их значениями и удаляет расширение .php со всех страниц

Спасибо за любую помощь.

Ответы [ 3 ]

0 голосов
/ 16 июля 2009

Попробуйте эти правила:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ (/[^/?\s]+)+\.php[?/\s]
RewriteCond %{QUERY_STRING} ^([^/&=]+)=([^/&]+)(&([^&].*))?$
RewriteRule \.php$ ?%4 [N,E=PATH:%{ENV:PATH}/%1/%2]
RewriteCond %{ENV:PATH} ^/
RewriteRule \.php$ %{ENV:PATH} [L,R=301]

RewriteRule ^(.*)/([^/]+)/([^/]+)$ $1?$2=$3 [N,QSA]
RewriteRule ^([^/]+)/([^/]+)$ $1.php?$1=$2 [L,QSA]

Но было бы намного проще сделать это с PHP: проверьте, какой путь URI был запрошен (см. $_SERVER['REQUEST_URI']), и при необходимости перенаправьте (см. header function ).

0 голосов
/ 16 июля 2009

Вы можете создавать правила перезаписи на этом веб-сайте на лету Генератор Mod_rewrite

0 голосов
/ 16 июля 2009

Попробуйте использовать что-то вроде этого:

RewriteBase /
RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)&(\w+)=(\w+)$ [NC]
RewriteRule ^user.php$ user/%1/%2/%3/%4? [NC,R=301,L]

RewriteRule ^user/(\w+)/(\w+)/(\w+)/(\w+)$ user.php?$1=$2&$3=$4 [L]
...