Htaccess用连字符+重定向到新网址替换%20

时间:2014-05-30 18:24:53

标签: .htaccess redirect space rule hyphen

我有以下htaccess文件:

Options -MultiViews

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

RewriteRule ^archive/([^/]+)$ news?title=$1
RewriteRule ^cars/([^/]+)$ carbrands?brand=$1

问题是一些汽车品牌包含两个单词,因此它给出了以下结果:

example.com/cars/alfa%20romeo

如何更改我的代码,以便将人们重定向到:

example.com/cars/alfa-romeo

我可能需要添加[R = 301,L]来重定向到新的网址,但是如何判断正确的网址应该包含连字符而不是“%20”?

2 个答案:

答案 0 :(得分:1)

RewriteEngine On下面添加以下代码可以用连字符替换所有空格。

RewriteCond %{THE_REQUEST} (\s|%20)
RewriteRule ^([^\s%20]+)(?:\s|%20)+([^\s%20]+)((?:\s|%20)+.*)$ $1-$2$3 [N,DPI]
RewriteRule ^([^\s%20]+)(?:\s|%20)+(.*)$ /$1-$2 [L,R=301,DPI]

答案 1 :(得分:0)

在“RewriteEngine On”

下面添加此项
RewriteRule ^cars/(.*)(?:\ )(.*)$ /cars/$1-$2 [L,E=DASH:Y]
RewriteCond %{ENV:DASH} Y
RewriteRule ^([^\ ]+)$ /$1 [L,R=301]