我正在尝试将此网址www.website.com/clients/index.php?display=client-name
转换为www.website.com/clients/client-name
。
但我遇到了问题,因为客户名称的长度通常不同。它可以是从一个单词到五个单词的任何地方,但它们总是用连字符分隔:
我已成功为此网站编写了其他几个网址,但无法使用此网站。
答案 0 :(得分:0)
1)似乎(对我而言)你是以其他方式做的 - 第二个应该是你的人类可读链接网址,第一个应该是mod_rewrite处理的结果。
2)只要你知道它的起点和终点,你的客户名称有多长并不重要 - 这里的开始应该是
/clients/(.*)$
并应改写为
/clients/index.php?display=$1
阅读有关正则表达式的更多内容将有助于您
答案 1 :(得分:0)
除非您使用与它们不匹配的正则表达式,否则连字符无关紧要。您只需在表达式中包含-
即可。例如,如果您有([A-Za-z0-9]+)
,则只需添加-
即可([A-Za-z0-9-]+)
。您还应该确保您匹配的任何内容都不适用于现有资源(例如index.php),因为您希望这些资源得到服务。如下所示:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^/?clients/([A-Za-z0-9-]+)/?$ /clients/index.php?display=$1 [L]