Переписать несколько правил движка - PullRequest
0 голосов
/ 22 января 2012

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

http://www.mysite.com/profile/kwelch изменить на profile.php?username=kwelch

Вот строка, которую я имею для этого: RewriteRule ^profile/([^/.]+)/?$ profile.php?username=$1

Я также хочу переписать все возрасты, чтобы добавить .php на любую страницу.

RewriteRule ^(.*)$ $1.php [L, QSA]

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

Другие URL:

http://www.mysite.com/wof/vote изменить на vote.php?type=wof http://www.mysite.com/wof/nominate изменить на nominate.php?type=nominate

Я хотел бы добавить больше URL, например, идентификатор пользователяесли возможно.

Я попытался сложить две строки вместе, и они прекрасно работают по отдельности, но на странице появляются ошибки и отображается ошибка 500.

Я ценю помощь.

1 Ответ

1 голос
/ 22 января 2012

Это в первую очередь вопрос порядка: Все, что вы хотели знать о правилах Mod_Rewrite, но боялись спросить?

Ваше правило для добавления расширения должно быть первым и слегка адаптированным:

RewriteCond %{SCRIPT_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L,QSA]

Это гарантирует, что он переписывает только те запросы, которые действительно существуют как скрипт .php. Утверждение в RewriteRule, подобное (?<!\.php), может иметь тот же эффект. (Гораздо проще было бы прибегнуть к MultiViews вместо этого RewriteRule.)

И, наконец, вам может повезти с добавлением [L] к каждому следующему правилу. Это предотвращает циклы в механизме перезаписи, что, как я подозреваю, является причиной вашей неуказанной ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...