Замена пробела из специальных URL-адресов с помощью htaccess - PullRequest
0 голосов
/ 12 ноября 2018

Я могу заменить все %20 на - из URL, используя:

.htaccess:

RewriteRule "^(\S*)\s+(\S*)$" /$1-$2 [L,NE,R=302]
RewriteRule "^(\S*)\s+(\S*\s+.*)$" $1-$2 [L]
# remove multiple hyphens
RewriteRule ^(.*)-{2,}(.*)$ /$1-$2 [L,R=302]

Теперь я хочусделать эту работу только для желаемых URL Не для всех, URL похож на:

Example.com / blog / example% title => example.com /blog / example-title

Example.com / product / example% product => example.com / product / example-product

Как я могу сделать это, используя .htaccess?

РЕДАКТИРОВАТЬ:

Основная проблема заключается в том, что когда я загружаю изображения на сервер с % с именем типа image 1.jpg, URL перенаправляет меня наимя типа image-1.jpg и сервер не может найти изображение для показа

РЕДАКТИРОВАТЬ 2

my .htaccess заранее имеют эти коды:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

1 Ответ

0 голосов
/ 12 ноября 2018

Вы можете разместить известные префиксы в ваших правилах:

RewriteRule "^((?:blog|product)/\S*)\s+(\S*)$" /$1-$2 [L,NE,R=302,NC]

RewriteRule "^((?:blog|product)\S*)\s+(\S*\s+.*)$" $1-$2 [L,NC]

# remove multiple hyphens
RewriteRule ^((?:blog|product)/.*)-{2,}(.*)$ /$1-$2 [L,R=302,NE,NC]
...