使用htaccess从特殊URL替换空间

时间:2018-11-12 16:13:39

标签: .htaccess mod-rewrite

我可以使用以下命令从网址中将所有%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]

1 个答案:

答案 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]