URL重写失败

时间:2013-06-23 17:07:50

标签: php .htaccess mod-rewrite url-rewriting

我有以下网址:

http://mysite.com/tracks/backing-track-search?artist=TINA-TURNER&action=search&listArtist=true

我想读的是:

http://mysite.com/tracks/backing-track-search/TINA-TURNER

这就是我正在尝试但只是让我http://mysite.com/tracks/backing-track-search没有任何GET变量

RewriteRule ^(tracks)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /$1/$2?artist=$3&action=$4&listArtist=$5 [QSA,L]

这是可能的,还是我必须在URL中包含actionlistArtist变量? (如果它们不在PHP文件中,我可能会标记它们,但这很容易)

我也尝试过,但失败了:

http://mysite.com/tracks/backing-track-search/TINA-TURNER/search/true

编辑我认为可能会有一些混乱,我的错......

在原始网址

http://mysite.com/tracks/backing-track-search?artist=TINA-TURNER&action=search&listArtist=true

注意

...backing-track-search?artist...

backing-track-search实际上是一个文件,backing-track-search.html不是目录 - 我只是将.html留下来,因为我在.htaccess文件中写了规则

2 个答案:

答案 0 :(得分:1)

如果你在.htaccess中这样做会怎么样?

RewriteRule ^backing-track-search/([^/]+) /tracks/backing-track-search.html?artist=$1&action=search&listArtist=true&%{QUERY_STRING} [L]

然后使用

http://mysite.com/backing-track-search/TINA-TURNER

答案 1 :(得分:0)

当我在$_GET中创建一个php脚本时,我在/tracks/backing-track-search中看到所有3个变量,在我的文档根目录中的空白htaccess文件中使用第二个规则。

这里可能会发生的是,只需转到/tracks/backing-track-search/something-something即可立即运行脚本,因此不会重写任何内容(特别是如果您使用RewriteCond %{REQUEST_FILENAME} !-f或{{1}等条件}})。然后脚本的PATH INFO最终以!-d结尾。您可以尝试将网址重命名为不同的内容,例如:

/something-something

然后你的规则是:

http://mysite.com/tracks/backing-track/TINA-TURNER/search/true