Как вы объединяете эти 2 .htaccess RewriteRules в один? - PullRequest
2 голосов
/ 26 августа 2009

Хорошо, у меня есть еще один вопрос, и я новичок в этом.

У меня есть этот RewriteRule, он правильно перенаправляет запрос, но не позволяет мне использовать другие каталоги:

RewriteRule ^([0-9A-Za-z]+)/?$ /query.php?id=$1 [L]

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

RewriteRule ^(css|js|admin|pages|includes|images)(/|$) - [L]

Могу ли я объединить два? Если да, то как?

Ответы [ 2 ]

4 голосов
/ 26 августа 2009

RewriteRule проверяются в том порядке, в котором они встречаются в файле, поэтому, если вы сначала поместите правило css|js|admin|pages|includes|images, оно сначала совпадет и остановит процесс перезаписи, прежде чем будет достигнуто другое правило. Просто убедитесь, что в конце этого правила стоит флаг [L].

0 голосов
/ 26 августа 2009

Есть еще одна хитрая уловка:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+) query.php?id=$1 [L]

То есть, если путь к файлу не является существующим файлом или каталогом, отправьте запрос в сценарий PHP (чтобы можно было динамически загрузить какой-либо модуль или показать полезную страницу 404).

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