RewriteRule переводит URL для использования разных файлов php - PullRequest
0 голосов
/ 29 июня 2018

В файле .htaccess моего PHP-приложения я использую одно простое переписывание для перевода моих URL-адресов из:

/shop/hats/detroit/

до:

index.php?url=/shop/hats/detroit/

с использованием следующего правила перезаписи:

# Rule 1
RewriteRule ^(.*)$ /repos/nvp/httpdocs/index.php?url=/$1 [L,QSA]

Я бы хотел, чтобы следующий текст также работал:

# Rule 2
RewriteRule ^pic/(.*)$ /repos/nvp/httpdocs/get_image.php?pic=$1 [L,QSA]

Но эти два правила перезаписывают друг друга или противоречат друг другу. Они работают каждый самостоятельно, но не вместе. Как я могу использовать все URL, чтобы использовать правило 1, и только если URL начинается с pic / , чтобы использовать правило 2 вместо правила 1?

1 Ответ

0 голосов
/ 01 июля 2018

Это потому, что шаблон (.*) соответствует всем Uris. Чтобы избежать переопределения правил, вам нужно изменить порядок своих правил и сначала поместить конкретные правила в порядок.

# specific rules
RewriteRule ^pic/(.*)$ /repos/nvp/httpdocs/get_image.php?pic=$1 [L,QSA]
#catch-all rules
RewriteRule ^(.*)$ /repos/nvp/httpdocs/index.php?url=/$1 [L,QSA]
...