Как получить, если mod_rewrite должен переписать? - PullRequest
1 голос
/ 17 ноября 2011

Я пытаюсь сделать mod_rewrite.Указанные URL-адреса должны выглядеть следующим образом:

RewriteRule ^([a-zA-Z0-9\-)/([a-zA-Z0-9\-)$ index.php?anum=$1&aname=$2

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

Так какможно ли добиться, чтобы при переписывании модов принимались только URL-адреса, такие как "foo / bar", а не такие, как "fizz / buzz / jq.js"?

Ответы [ 3 ]

0 голосов
/ 17 ноября 2011

если хотите

test / foo / dir / test44.j4s

до

dir test44.j4s

RewriteRule ^foo/(.*)/(.*) index.php?dir=$1&file=$2 [L]
0 голосов
/ 18 ноября 2011

Просто сделайте следующее: если запрос не заканчивается известным расширением, примените правило перезаписи:

RewriteCond %{REQUEST_URI} (.*)(\.(css|js|pdf|jpg|jpeg|gif|png|ico))
RewriteRule ^([a-zA-Z0-9\-)/([a-zA-Z0-9\-)$ index.php?anum=$1&aname=$2

Или сделайте противоположную сторону: если запрос начинается с известным расширением, затем останавливается, в противном случае продолжайте применять остальные:

RewriteRule (.*)(\.(css|js|htc|pdf|jpg|jpeg|gif|png|ico)){1}$ $1$2 [QSA,L]
RewriteRule ^([a-zA-Z0-9\-)/([a-zA-Z0-9\-)$ index.php?anum=$1&aname=$2

Оба решения должны работать.Скажи мне, что сделал;) Оливье

0 голосов
/ 17 ноября 2011

Вы можете убедиться, что не совпадают с существующими файлами или каталогами, используя следующие условия перезаписи:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9\-)/([a-zA-Z0-9\-)$ index.php?anum=$1&aname=$2

См. http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond для полной мощности RewriteCond.часто используют

RewriteCond $1 !^favicon.ico|^css|^js

для исключения favicon, а каталоги css и js переписываются.

Следующие элементы должны исключать файлы Javascript и CSS:

RewriteCond $1 !\.css$|\.js$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...