创建一个简单的规则来重写物理URL的友好URL

时间:2011-09-28 18:27:19

标签: mod-rewrite url-rewriting

我无法绕过URL重写。我想做的事情似乎很简单,但是我在获得想要的结果时遇到了问题。

我希望允许用户在最后输入www.mysite.com/search/real并选择/。这会将他们带到www.mysite.com/content/search_real_property.asp

就是这样。这是我现在的规则。这个问题是它会继续堆叠。

RewriteRule ^(search) content/search_real_property.asp

所以这会有效/search/real,但search/real/search/real/search/real/也是如此 和别的。

1 个答案:

答案 0 :(得分:1)

假设没有其他问题,您已经打开了重写引擎(RewriteEngine On)并且您要么在httpd-vhosts.conf中添加重写,要么在Web树的根目录中添加.htaccess文件(以便解决任何路径问题)...然后问题只是正则表达式模式匹配之一。虽然我对ASP运行似乎是一个Apache服务器感到有点困惑(假设我们正在谈论这个IS mod重写)。

所以,你真正想要的就是终止比赛 - 比如:

RewriteEngine On
RewriteRule ^search/real/?$ /content/search_real_property.asp

这会将它修复为/ search / real(带或不带斜杠,?表示匹配前面的字符0或1次)到/content/search_real_property.asp。由于$符号表示行终止符(EOL有效),“真实”之后必须没有任何内容(除了可能是1个正斜杠)。

为了获得更大的灵活性,您可能希望了解使用正则表达式可以实际执行的操作,例如......

RewriteEngine On
RewriteRule ^search/([^/]*)/?$ /content/search_real_property.asp?query=$1

这将允许您获取任何字符串并将其作为名为query(Request.QueryString('query')IIRC)的变量在地址栏中传递。

尝试:http://www.regular-expressions.info/了解更多信息。