/ / htaccess presmerovanie nahradí% 20 pomlčkou len pre názvy súborov - regex, wordpress, .htaccess, redirect, mod-rewrite

htaccess presmerovanie nahradí% 20 pomlčkou iba pre názvy súborov - regex, wordpress, .htaccess, redirect, mod-rewrite

Musím nahradiť% 20 biele medzery v názvoch súborov požadovaných adries URL.

Používam tento Regex: ^(.*)s(.*)$ ktoré nahrádzajú všetky biele medzery v adrese URL. Nepodarilo sa mi pracovať len pre názvy súborov.

http://example.com/subfolder/One More Sub Folder/Onother Sub Folder/File%20test%20example.jpg

Ja som pod wordpress a potrebujem RewriteCondition a RewriteRule, aby som to urobil:

http://example.com/wordpress/subfolder/One More Sub Folder/Onother Sub Folder/File-test-example.jpg

Tiež potrebujem rovnaké nahradiť požiadavky htm, ale musím tiež odstrániť rozšírenie html z názvov súborov.

Takže teraz mám tieto pravidlá, ktoré pracujú pre html:

RewriteCond %{THE_REQUEST} (.htm|.html)
RewriteRule ^(.*)(.htm|.html)$ http://www.example.com/wordpress/$1 [R=301,L]

a tieto pre presmerovanie jpg:

RewriteCond %{REQUEST_URI} !^/wordpress/wp-content/uploads/
RewriteRule ^(.*.jpg)$ /wordpress/wp-content/uploads/2016/02/$1 [R=301,L]

Na začiatku súboru htaccess mám malú transformáciu potrebnú pre prácu s wp slugom:

<IfModule mod_speling.c>
CheckSpelling on
</IfModule>

odpovede:

0 pre odpoveď č. 1

Ak sú tieto existujúce súbory, môžete použiť nasledujúce pravidlo na nahradenie% 20 pomocou -:

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)s(.*)$ /$1-$2 [NC,L,R]

Pravidlo platí iba pre existujúce súbory.


0 pre odpoveď č. 2

Skúsil si to RewriteRule ^(.*)(%20)(.*)$ /$1-$2 [R=301,NE,L]?