Перенаправить .php на URL без расширения только для не динамических URL - PullRequest
0 голосов
/ 22 января 2012

Я пытаюсь 301 перенаправить страницы с расширением .php на их версию без расширения. Используя приведенное ниже правило, страницы с параметром запроса дают сбой (signup.php? Login = true) или приводят к циклу перенаправления.

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php$ /$1 [R=301]

Поэтому я бы хотел исключить динамические URL-адреса (в любом случае не имеет смысла переписывать их). Я написал код ниже, но условие все еще соответствует динамическим URL.

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php$ /$1 [R=301]

Может ли кто-нибудь помочь мне скорректировать мое состояние, чтобы предотвратить перезапись динамических URL.

1 Ответ

1 голос
/ 22 января 2012

Попробуйте следующее.Убедитесь, что между \.php\ и `[NC]

RewriteEngine on
RewriteBase /

#any url with .php and no anchor or query string
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^\ ]+)\.php\  [NC]
RewriteRule ^ /%1 [R=301]
есть 2 пробела
...