好的,我已经修改了上一个问题,使我的意图更加明确,并希望能帮助其他希望做类似事情的人。
假设我有一个数字下载商店,我希望我的网址看起来像这样:
downloads.com/music/this-song-name/3873 // A url to a unique track
downloads.com/music/featured-stuff // A url that links to unique content
downloads.com/music // The homepage for that section
我也可以有这样的网址
downloads.com/videos/this-video/3876
等
现在,在服务器端,PHP完成所有工作。它需要URL:
downloads.com/?a=music&b=this-song-name&c=37863 // load page a, get ID c from database
OR
downloads.com/?a=music // Just load the default music page
我需要.htaccess来改变
url.com/?a=1&b=2&c=3`
到
url.com/1/2/3
a,b和c是固定的,并且是用于解析数据的唯一参数(例如,你很快就找不到?f =音乐)
我遇到的一个问题是,如果所有三个参数都存在,我可以让它工作但是如果一个参数被拿走就无法工作。
我不是REGEX
专家和mod重写我讨厌我,我希望有人可以帮助创建一个美丽的代码行,这将有助于我
和其他人好奇这样做。
谢谢
答案 0 :(得分:1)
我认为你已经有了基本的mod重写规则。
您正在寻找的代码是:
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ index.php?a=$1&b=$2&c=$3
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ index.php?a=$1&b=$2
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?a=$1
正则表达式解释
^ # Matches the start of the string (the URL)
( # Indicates the start of a capturing group (in this case the thing we want to replace)
[a-zA-Z0-9_-]+ # Matches 1 or more letters, numbers, underscore's and -'s (+ = 1 or more * = 0 or more)
) # Indicates the end of the capturing group
/? # Matches 0 or 1 times the '/' symbol
$ # Matches the end of the string (the URL)