我有以下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”?
答案 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]