2013-12-09 6 views
0

Я strugglening с моим файлом .htaccess в orther для достижения этой цели:Переписать URL с одним или несколькими параметрами?

a.com/male-items (OR)  
a.com/male-items/popularity -> a.com/index.php?g=m&sort-popularity 

a.com/female-items (OR)  
a.com/female-items/popularity -> a.com/index.php?g=f&sort=popularity 

a.com/male-items/alphabet  -> a.com/index.php?g=m&sort=alphabet 
a.com/male-items/alphabet/a -> a.com/index.php?g=m&sort=alphabet&l=a  
(and same for female) 

Я знаю, что это должно быть что-то вроде

RewriteRule ^a$ a.com/index.php?q=$1 

Но на самом деле, глядя на различные модах-перезапись/регулярные выражения объяснений и чит-листы не помогают многому, чтобы заставить его работать. Трудная часть заключается в том, чтобы понять, как вы определяете разные параметры в адресе, а затем используете их в переписанном URL-адресе.

(любые объяснения с вашим решением будут appretiated)

+0

Поскольку 'д, q2, q3' и т.д., даже не существует в оригинальной URI, они не могут быть использованы в переписанной строке запроса. – anubhava

+0

@anubhava: Конечно, они могут. Вероятно, он хочет первый сегмент в q, второй в q2, ... – ThiefMaster

+0

@Roy: Очень часто для таких случаев можно переписать все запросы к файлам, которые на самом деле не существуют в вашем файле PHP, а затем проанализировать REQUEST_URI там. – ThiefMaster

ответ

0

Этого HTAccess линии перенаправлять все несуществующие файлы/папки в index.php:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

внутри index.php вы можете использовать: $_SERVER['REQUEST_URI'] для разбора ваши параметры.

1

Используйте эти правила в файле DOCUMENT_ROOT/.htaccess:

RewriteEngine On 

RewriteRule ^male-items/?$     /index.php?g=m&sort=popularity [L,QSA] 
RewriteRule ^male-items/([^/]+)/?$   /index.php?g=m&sort=$2 [L,QSA] 
RewriteRule ^male-items/([^/]+)/([^/]+)/?$ /index.php?g=m&sort=$2&l=$3 [L,QSA] 

RewriteRule ^female-items/?$     /index.php?g=f&sort=popularity [L,QSA] 
RewriteRule ^female-items/([^/]+)/?$   /index.php?g=f&sort=$2 [L,QSA] 
RewriteRule ^female-items/([^/]+)/([^/]+)/?$ /index.php?g=f&sort=$2&l=$3 [L,QSA] 
Смежные вопросы