URL переписать .htaccess - PullRequest
4 голосов
/ 22 февраля 2012

Я готовлюсь к разработке веб-сайта со следующей структурой URL.

Я новичок в переписывании URL и хотел бы узнать, как лучше всего справиться с этим.

http://domain.com                    index.php
http://domain.com/about              about.php
http://domain.com/agencies           agencies.php
http://domain.com/contact            contact.php
http://domain.com/publisher          publisher.php
http://domain.com/publisher/sign_up  publisher_signup.php
http://domain.com/agencies/sign_up   agencies_signup.php
http://domain.com/agencies/login     login.php
http://domain.com/advertiser         advertiser.php
http://domain.com/advertiser/sign_up advertiser_signup.php
http://domain.com/advertiser/login   login.php

Что было бы наиболее эффективным htaccess rewriterule?

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

Яв долгосрочной перспективе количество косых черт в URL может быть максимально 4, например

 http://domain.com/area/sub_area/sub_area2/sub_area3

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 22 февраля 2012

Извините, но ваше преобразование "URL" не является однородным (= невозможно "обобщить", потому что они не разделяют точно одни и те же принципы), поэтому вот лучшее, что я мог сделать:

RewriteEngine On
^/?$ index.php [NC,QSA,L]
^/?about$ about.php [NC,QSA,L]
^/?(agencies|contact|publisher|advertiser)$ /$1.php [NC,QSA,L]
^/?(publisher|agencies|advertiser)/sign_up$  /$1_signup.php [NC,QSA,L]
^/?(publisher|agencies|advertiser)/login$    /login.php [NC,QSA,L]

Но если вы хотите "однородные" вещи, которые не совсем соответствуют тому, что вы просите, у вас могут быть "более чистые" правила, подобные этим:

RewriteEngine On
^/?$ index.php [NC,QSA,L]
^/?about$ about.php [NC,QSA,L]
^/?(agencies|contact|publisher|advertiser)$ /$1.php [NC,QSA,L]
^/?(agencies|contact|publisher|advertiser)/sign_up$ /$1_signup.php [NC,QSA,L]
^/?(agencies|contact|publisher|advertiser)/login$ /login.php [NC,QSA,L]

И если вы действительно хотите централизовать все, вы можете сделать (= передать тип в файл php):

RewriteEngine On
^/?$ index.php [NC,QSA,L]
^/?about$ about.php [NC,QSA,L]
^/?(agencies|contact|publisher|advertiser)$ /$1.php [NC,QSA,L]
^/?(agencies|contact|publisher|advertiser)/(sign_up|login)$ /$2.php?type=$1 [NC,QSA,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...