初学者重写htaccess

时间:2010-02-25 20:52:47

标签: .htaccess mod-rewrite url-rewriting

我只想重写来自的所有请求:

http://example.com/products/product.cfm?id=product-name

http://example.com/products/product-name

其次,

http://example.com/category.cfm?id=some-category&sub=sub-category

http://example.com/some-category/sub-category

这是我尝试过的:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^products/$1 ^products/product.cfm?id=$1 [NC] 

我确信这没有意义,因为我真的不知道我在做什么。我希望有人可以告诉我我哪里出错了所以我可以效仿。

谢谢! 乔治

3 个答案:

答案 0 :(得分:3)

http://www.addedbytes.com/for-beginners/url-rewriting-for-beginners/

我不喜欢纯粹的“链接”答案,但上面的链接对我非常有帮助:]

答案 1 :(得分:0)

使用mod_rewrite,您可以写:

RewriteRule ^products/([\w-]+)$ /products.cfm?id=$1&%{QUERY_STRING}

这将执行您想要的翻译,同时保留原始网址中的其他参数。它不会处理类别,但我不确定你是否可以像你描述的那样同时操作它们。

答案 2 :(得分:0)

这些方面的东西:

RewriteCond %{query_string} &?id=([^&]+) [NC] 
RewriteRule ^/products/product.cfm$ /products%1? [R,NC,L]

# Fragile, this assumes that params will always be in order id= then sub=
RewriteCond %{query_string} &?id=([^&]+)&sub=([^&]+) [NC] 
RewriteRule ^/category.cfm?$ /%1/%2? [R,NC,L]

RewriteRule中的R标志强制进行硬重定向(访问者的位置栏将更改为新URL)。删除此标志以进行内部重定向。