Как я могу улучшить свои вещи .htaccess mod_rewrite? - PullRequest
2 голосов
/ 16 августа 2011

Я создал следующий файл .htaccess после нескольких часов работы. Кажется, что все работает правильно, однако я новичок в mod_rewrite и считаю, что мой код любительский, поэтому я ищу что-то, что можно улучшить.

Например, я подумал, что если я буду использовать [L] в конце правила, остальные перезаписи будут игнорироваться, но, глядя на журналы перезаписи, я вижу, что это не так, есть несколько нежелательных совпадений с образцамиэто, конечно, замедлит все.

Также у меня есть книга, в которой говорится, что [C] будет цепочка условий перезаписи, но мой апач выдает

http://pastebin.com/62JyBXdS

Ответы [ 2 ]

0 голосов
/ 16 августа 2011

Флаг [L] действительно препятствует дальнейшей обработке правил, однако переписанный URL может быть передан обратно через все ваши правила во второй раз, следовательно, несколько записей в вашем журнале - см. Страницу руководства http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_l

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

RewriteRule ^/([dprcmlfb]|members|lnli|freelisting)/(.*)$ /$1\.php/$2 [L]

еслиВы также добавляете RewriteCond, например,

RewriteCond %{REQUEST_URI} !^/[^/]+\.php

, чтобы предотвратить запуск правила для запроса php-файла

0 голосов
/ 16 августа 2011

Вы можете добавить опцию MultiViews вместо правил, как правило ниже:

RewriteRule ^/d/(.*)$ /d\.php/$1 [L]

MultiViews будет правильно интерпретировать / d / stuff как запрос к d.php, если никакое другое правило не мешает.

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