我可以使用以下命令从网址中将所有%20
替换为-
:
.htaccess:
RewriteRule "^(\S*)\s+(\S*)$" /$1-$2 [L,NE,R=302]
RewriteRule "^(\S*)\s+(\S*\s+.*)$" $1-$2 [L]
# remove multiple hyphens
RewriteRule ^(.*)-{2,}(.*)$ /$1-$2 [L,R=302]
现在,我只想针对所需的网址进行此工作,而不是全部,网址就像:
Example.com/blog/example%title => example.com/blog/example-title
Example.com/product/example%product => example.com/product/example-product
我如何使用.htaccess
来做到这一点?
编辑:
主要问题是,当我使用名称为image 1.jpg
的名称以%的格式将图像上传到服务器时,会将我重定向到名称为image-1.jpg
的名称,并且服务器找不到图像显示
编辑2
我的 .htaccess 事先有以下代码:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
答案 0 :(得分:1)
您可以在规则中放置已知前缀:
RewriteRule "^((?:blog|product)/\S*)\s+(\S*)$" /$1-$2 [L,NE,R=302,NC]
RewriteRule "^((?:blog|product)\S*)\s+(\S*\s+.*)$" $1-$2 [L,NC]
# remove multiple hyphens
RewriteRule ^((?:blog|product)/.*)-{2,}(.*)$ /$1-$2 [L,R=302,NE,NC]