Как бы я написал RewriteRule, чтобы сделать исключение для одного файла - PullRequest
1 голос
/ 02 июня 2010

У меня сейчас есть это в моем .htaccess файле:

Options +FollowSymLinks  
RewriteEngine On    
RewriteRule ^(.*)\.html$ index.php?pagename=$1&%{QUERY_STRING}

Имя файла html переписывается в строку запроса названия страницы.

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

Спасибо за помощь.

1 Ответ

6 голосов
/ 02 июня 2010
  1. Нет смысла добавлять QUERY_STRING самостоятельно; вы оставите блуждающий &, если его нет, и у mod_rewrite уже есть инструмент, чтобы сделать это лучше:

    RewriteRule ^(.*)\.html$ index.php?pagename=$1 [QSA]

  2. Вы можете управлять RewriteRule с помощью RewriteCond, который предшествует ему. Например:

    RewriteCond %{REQUEST_URI} !^/staticpage.html$
    RewriteRule ^(.*)\.html$ index.php?pagename=$1 [QSA]

  3. Другим полезным шаблоном является RewriteCond %{REQUEST_FILENAME} !-f, который будет обходить следующий RewriteRule любой раз, когда URL будет соответствовать существующему обычному файлу в документе.

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