使用htaccess删除url中的空格或%20

时间:2015-03-04 08:05:23

标签: php .htaccess mod-rewrite

嗨,伙计们,你们可以帮助我,我在这里遇到一点麻烦,使用htaccess删除我的网址中的所有20%并用连字符替换它我设法摆脱Acer之间的其他20%,液体,S1,S510

这是我的网址 / localhost / gadgets / product / Acer-Liquid-S1-S510%20Mobile

正如您所看到的,在最后一部分中有一个%20,我该如何删除它

这是我的htaccess

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /gadgets/

Options -Indexes

RewriteRule ^brand/([a-zA-Z]+)$ brand.php?id=$1

RewriteRule ^product/([A-Za-z0-9-]+)/?$   product.php?product_name=$1-$2 [NC,L]

RewriteRule ^(.*/|)[\s%20]+(.+)$ $1$2 [L]

RewriteRule ^(.+?)[\s%20]+(/.*|)$ $1$2 [L]

RewriteRule ^([^\s%20]*)(?:\s|%20)+(.*)$ $1-$2 [L,R]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f

RewriteRule ^(.*)$ $1.php

先谢谢你们

1 个答案:

答案 0 :(得分:1)

试试这个:

Options +FollowSymLinks -MultiViews -Indexes

RewriteEngine On
RewriteBase /gadgets/

RewriteRule ^([^\s%20]*)(?:\s|%20)+(.*)$ $1-$2 [N,E=Redirect:1]

RewriteCond {ENV:Redirect} ^1$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R,L]

RewriteRule ^brand/([a-zA-Z]+)$ brand.php?id=$1 [NC,L]
RewriteRule ^product/([A-Za-z0-9-]+)/?$ product.php?product_name=$1 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

第一条规则会删除循环中的所有空格(使用[N]),因此我们现在不必逐个指定多个RewriteRules

下一个规则({ENV:Redirect}条件)是可选的,用于反映客户端浏览器中连字符的使用,以便创建的任何书签链接到正确的非空白版本网址。