1

我尝试了很多没有结果的代码。我正在使用 wordpress,搜索结果的 url 是:

http://mysite.com/search/the%20search%20query%20

我需要改变它

http://mysite.com/search/the-search-query/

htaccess 有办法吗?

这实际上是我的 htaccess 文件:

# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Options +FollowSymlinks -MultiViews
RewriteRule ^(.+)(\s|%20)(.+)$ /$1-$3 [R=301,QSA,L,NE]

# END WordPress

最后一个重写规则是我尝试但没有成功

4

1 回答 1

2

您的规则看起来不错,但是您在路由规则之后拥有它。这意味着无论如何,该规则永远不会达到,因为所有内容,包括任何带有空格的请求,都会被路由到index.php. 您需要在路由规则之前放置任何重定向规则:

Options +FollowSymlinks -MultiViews
RewriteRule ^(.+)(\s|%20)(.+)$ /$1-$3 [R=301,QSA,L,NE]

# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
于 2013-05-06T23:43:54.823 回答