-1

如何更改此 URL

http://mysite.com/index.php?searchterm=my+great+song

http://mysite.com/search/my-great-song.html

我是 mod_rewrite 的初学者。这就是为什么我不知道该怎么做。如果您能告诉我应该在 .htaccess 文件中写入以更改 url 的 .htaccess 代码,我将不胜感激。

4

3 回答 3

1

我尝试了它的工作

Options +FollowSymLinks

RewriteEngine On
RewriteRule ^index.html$ index.php
RewriteRule ^search/([^\.]+).html$ /index.php?searchterm=$1

Options All -Indexes

<files .htaccess>
order allow,deny
deny from all
</files>
于 2013-07-22T11:27:54.277 回答
0

你可以试试这段代码:

RewriteEngine On
RewriteRule ^search/([^\.]+).html$ /index.php?searchterm=$1
于 2013-07-22T10:47:53.917 回答
0

以下 htaccess 应该适合您

RewriteEngine on

RewriteCond %{ENV:stripspaces} 1
RewriteRule ^(.*)%20(.*)$ $1-$2 [N]

RewriteCond %{QUERY_STRING} ^searchterm=(.*)$
RewriteRule ^index\.php$ /search/%1.html? [E=stripspaces:1,E=redirect:1,N]

RewriteCond %{ENV:redirect} 1
RewriteRule ^(.*)$ $1 [R,E=!stripspaces,E=!redirect]

我使用环境变量[E=a:b]( docs ) 来控制何时应该去除空格并防止大量重定向。该N标志使重写引擎再次从 .htaccess 文件的顶部开始。因此,我将 stripspaces 规则放在顶部,以尽量减少需要匹配的规则数量。第二%1个规则是对重写条件中第一个捕获组的反向引用。尾随?清除查询字符串。所有这些的文档都可以在httpd.apache.org上找到。

于 2013-07-22T12:19:27.163 回答