-1

例如,我有一个用于吉他和弦的子域。 http://tabs.sitename.com/?song=song_name 我想将此网址重写为 http://tabs.sitename.com/song/song_name 我尝试使用以下代码,但我的网址没有重写。

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^song/([^/]*)/$ /?song=$1 [L]

网址没有重写。我错过了什么吗?请帮忙

4

2 回答 2

0

首先,您提供的模式:

^song/([^/]*)/$ 

与您尝试匹配的字符串不匹配:

song/Bistarai+Bistarai 

因此,下次在继续之前确保您的模式有效会有所帮助。

假设我完全理解您想要做什么,这应该可以工作(重定向目标文件上的 php 扩展名只是一个示例,使用您真正的目标文件是什么):

RewriteRule ^song\/([A-Za-z0-9\+]+) file_you_want_to_redirect_to.php?song=$1

正如我提到的,我在上面的示例中使用了一个 php 脚本;如果我理解你试图重定向到 http://tabs.musiccafenepal.com/的索引页面,你应该知道你应该把

index.php?song=$1 

代替

/?song=$1 

作为重定向目标表达式。

于 2013-11-13T07:18:32.170 回答
0

试试这些规则:

Options +FollowSymLinks
RewriteEngine On

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/\?(song)=([^\s&]+) [NC]
RewriteRule ^ /$1/$2? [R=301,L,NE]

# internal forward from pretty URL to actual one
RewriteRule ^song/([^/]+)/$ /?song=$1 [L,QSA,NE]
于 2013-11-13T07:07:53.033 回答