1

我正在尝试将此网址www.website.com/clients/index.php?display=client-name转换为www.website.com/clients/client-name.

但我遇到了问题,因为客户名称的长度通常不同。它可以是一个词到五个以上的词,但它们总是用连字符分隔:

  • 客户
  • 客户名称
  • 客户名的庄园
  • ETC

我已经成功地为这个网站写了几个其他的 url,但不能让这个工作。

4

2 回答 2

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]
于 2012-08-12T20:45:48.720 回答
0

1)似乎(对我而言)您正在以其他方式进行操作-第二个应该是您的人类可读链接网址,第一个应该是 mod_rewrite 处理的结果。
2)只要您知道它的起点和终点,您的客户名称有多长并不重要 - 这里的起点应该
/clients/(.*)$
并且应该重写为
/clients/index.php?display=$1

阅读更多关于正则表达式的内容将对您有所帮助

于 2012-08-09T15:52:21.937 回答