Переписать с отрицательными условиями правила? - PullRequest
1 голос
/ 13 января 2020

Я пытаюсь переписать все URL, которые были проиндексированы в Google example.com/zzz.php, на example.com/zzz/, и он работает со следующим кодом (в .htaccess):

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ https://example.com/$1 [R=301,L]


<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Но у меня есть новая проблема с этим, он сломал мои ajax и некоторые страницы моего wp-администратора, потому что phpless.

enter image description here

Кто-то есть идея RewriteCond с негативные условия для этого случая?

1 Ответ

1 голос
/ 13 января 2020

Вы можете создать несколько исключений (при необходимости). Например:

# Redirect external .php requests to extensionless url
RewriteCond %{REQUEST_URI} !^/wp-admin/
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ https://example.com/$1 [R=301,L]

Префикс ! в CondPattern отрицает регулярное выражение. Таким образом, приведенное выше исключит запросы, которые начинаются с /wp-admin/.

example.com/zzz.php до example.com/zzz/

Обратите внимание, что перенаправление выше будет перенаправлять на example.com/zzz - нет концевых слов sh.

...