Apache mod_rewrite: можно ли улучшить эти простые RewriteRule? И предложения! - PullRequest
0 голосов
/ 14 июля 2010

Я наконец начал понимать Apache mod_rewrite.Это очень здорово!

Плз взгляните на следующее:


1) Постоянные перенаправления http://www.domain.com/folder_name/ (с или без финальной косой черты и с или без www) дляhttp://www.domain.com/some/path/some_page.html

RewriteRule ^folder_name[/]*$ "http\:\/\/domain\.com\/some\/path\/some_page.html" [R=301,L]

2) Постоянный перенаправляет все запросы на www.domain.com... на тот же путь и запрос файла, но без www в домене

RewriteCond %{HTTP_HOST} !^domain.com$
RewriteRule ^(.*)$ "http\:\/\/domain\.com\/$1" [R=301,L]

Они все работают как положено и выполняют свою работу , мне просто любопытно, если какой-то парень, который более опытен, чем я, в mod_rewrite, мог бы дать мне несколько советов, таких как: "это могло бы быть лучше таким образом... "," может быть проблема, если ... "и т. д.

Спасибо!

1 Ответ

1 голос
/ 14 июля 2010
  1. Используйте квантификатор ? вместо *, и вам не нужно экранировать URL замены:

    RewriteRule ^folder_name/?$ http://example.com/some/path/some_page.html [R=301,L]
    
  2. Возможно, вы захотите рассмотреть запросы HTTP 1.0, в которых отсутствует поле заголовка Host . Еще одним полезным расширением было бы учесть HTTPS:

    RewriteCond %{HTTP_HOST} !^(|example\.com)$
    RewriteCond %{HTTPS} ^on(s)|
    RewriteRule ^ http%1://example.com%{REQUEST_URI} [R=301,L]
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...