Перезапись URL, когда расширение .php уже скрыто - PullRequest
0 голосов
/ 18 февраля 2019

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

Мои текущие URL-адреса (обратите внимание на косую черту перед строкой запроса):

https://example.com/card2/?search=Jimmmy 

Вот что я сейчас пробовал:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?card2/(.*?)/?$ /card2.php?search=$1 [L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /card2.php\?search=([^\&\ ]+)
RewriteRule ^/?card2\.php$ /card2/%1? [L,R=301,NE]

Это работает, если я попробую этот URL (мне нужно вручную удалить косую черту перед строкой запроса и ввести .php):

https://example.com/card2.php?search=Jimmy

Так что единственный способ, которым яможно заставить его работать в данный момент, введя .php в URL и удалив косую черту после этого.

Я пробовал следующее, моя логика заключалась в том, чтобы просто удалить расширения .php, которые были впереписать и добавить косую черту тоже, но это не работает:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?card2/(.*?)/?$ /card2/?search=$1 [L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /card2\/\?search=([^\&\ ]+)
RewriteRule ^/?card2$ /card2/%1? [L,R=301,NE]

РЕДАКТИРОВАТЬ, спасибо anubhava за ответ, вот мой файл htaccess сейчас:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
ErrorDocument 404 /not-found.php

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

<filesMatch "\.( jpg|jpeg|gif|png|ico|js)$">
Header set Cache-Control "max-age=2419200, public, must-revalidate"
</filesMatch>

<Files 403.shtml>
order allow,deny
allow from all
</Files>
deny from 70.24.57.210

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?card2/(.*?)/?$ /card2/?search=$1 [L]

RewriteCond %{THE_REQUEST} \s/card2(?:\.php)?/?\?search=([^\&\s]+) [NC]
RewriteRule ^ /card2/%1? [L,R=301,NE]

1 Ответ

0 голосов
/ 18 февраля 2019

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

RewriteCond %{THE_REQUEST} \s/card2(?:\.php)?/?\?search=([^\&\s]+) [NC]
RewriteRule ^ /card2/%1? [L,R=301,NE]

Также сохраните это правило в верхней части вашего .htaccess и тестируйте из нового браузера.

...