привет, у меня этот код в моем htaccess
<IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{THE_REQUEST} \s/+single\.php\?title=([^\s&]+) [NC] RewriteRule ^ /%1? [R=302,L,NE] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ single.php?title=$1 [NE,L,QSA] </IfModule>
и у меня есть пробелы в URL-адресе и вам нужно заменить их тире (-)
Как мне это сделать; это одна из моих страниц для тестирования
http://www.einfogarden.com/%D8%B1%D8%AC%D9%8A%D9%85%20%D8%A7%D9%84%D8%AA%D9%85%D8%B1%20%D9%88%D8%A7%D9%84%D8%AD%D9%84%D9%8A%D8%A8
У вас есть такие правила:
<IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{THE_REQUEST} \s/+single\.php\?title=([^\s&]+) [NC] RewriteRule ^ %1/? [R=302,L,NE] ## Adding a trailing slash RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{THE_REQUEST} \s/+(.*?)[^/][?\s] RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301] # convert %20 to - RewriteRule "^(\S*) +(\S* .*)$" $1-$2 [N,NE] RewriteRule "^(\S*) (\S*)$" $1-$2 [L,R=302,NE] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+?)/?$ single.php?title=$1 [NE,L,QSA] </IfModule>
Вы можете попробовать заменить первое правило чем-то вроде:
RewriteCond %{ENV:REDIRECT_STATUS} !200 RewriteCond %{THE_REQUEST} \s/+single\.php\?title=([^\s&]+) [NC] RewriteRule ^ /%1? [L,NE] RewriteCond %{ENV:REDIRECT_STATUS} 200 RewriteCond %{THE_REQUEST} \s/+single\.php\?title=([^\s&]+) [NC] RewriteRule ^(.*)(?:\ |\+)(.*)$ /$1-$2 [L,NE] RewriteCond %{ENV:REDIRECT_STATUS} 200 RewriteCond %{THE_REQUEST} \s/+single\.php\?title=([^\s&]+) [NC] RewriteCond %{REQUEST_URI} !(\ |\+) RewriteRule ^(.*)$ /$1 [R=301,L,NE]
Поэтому вместо того, чтобы просто перенаправлять прямые запросы на «/ title», вы сначала внутренне переписываете его в «/ title» (первое правило), затем итеративно заменяете все пробелы и «+» на тире «-» (второе правило). Когда в URI больше нет пробелов или «+», перенаправление (третье правило).
Затем вам нужно будет отредактировать файл single.php
чтобы он мог интерпретировать «title» с тире вместо пробелов.