TonyS
TonyS

Reputation: 17

htaccess replacing %20 with -

Please take it easy on me, but I'm still new in htaccess rewrites and all, never done it before.

I'm trying to replace %20 with - in my urls. I can't seem to figure out.

Could you tell me whats wrong in the following htaccess code? Only in the URL Rewrite part

# Begin hotlink protection #
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://webawwards.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.webawwards.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://webawwardscom.ipage.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.webawwardscom.ipage.com/.*$ [NC]
RewriteRule .(gif|jpg|png)$ - [F]
# End hotlink protection #


# Begin cache control #
ExpiresActive on
ExpiresDefault "now plus 240 minutes"
ExpiresByType text/html "now plus 240 minutes"
<FilesMatch "\.(css|png|bmp|ico|htm|gff|html|js|jpg|jpeg|gif|gcf)$">
FileETag MTime Size
ExpiresDefault "now plus 240 minutes"
</FilesMatch>


# End cache control #

# Url rewritting start #
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{HTTP_HOST} ^webawwards\.com [NC]
RewriteRule (.*) http://www.webawwards.com/$1 [L,R=301]

# remove spaces from start or after /
RewriteRule ^(.*/|)[\s%20]+(.+)$ $1$2 [L]

# remove spaces from end or before /
RewriteRule ^(.+?)[\s%20]+(/.*|)$ $1$2 [L]

# replace spaces by - in between
RewriteRule ^([^\s%20]*)(?:\s|%20)+(.*)$ $1-$2 [L,R]

# Url rewrite end #


# Enable gzip compression
<ifModule mod_gzip.c>
 mod_gzip_on Yes
 mod_gzip_dechunk Yes
 mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
 mod_gzip_item_include handler ^cgi-script$
 mod_gzip_item_include mime ^text/.*
 mod_gzip_item_include mime ^application/x-javascript.*
 mod_gzip_item_exclude mime ^image/.*
 mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

It doesnt seem to work.

I want www.domain.com/blog/post.php?title=text%headline to be replaced by www.domain.com/blog/title-headline

I know the code above is wrong but I cant figure out where

Upvotes: 1

Views: 1018

Answers (1)

Howli
Howli

Reputation: 12469

Try this instead

RewriteCond %{THE_REQUEST} ^(GET|POST)\ /blog/post\.php\?title=(.*)%20(.*)\ HTTP
RewriteRule ^ /blog/%2-%3? [R=301,L]

So if the title contains a space, it will be rewritten to a -

Upvotes: 1

Related Questions