.htaccess代码mod-rewrite代码清理

时间:2011-10-22 05:56:29

标签: php apache .htaccess mod-rewrite

我在这个mod重写的东西中是一个新的东西。

我试图做一些基本的重定向。

Options +FollowSymLinks
RewriteEngine on
ErrorDocument 404 /index.php
RewriteCond %{HTTP_HOST} ^pickndrive.info
RewriteRule (.*) http://www.pickndrive.info/$1 [R=301,L]
RewriteRule ^new/cars/([^/]+)/([^/]+)/? profiles.php?carname=$2&carnumb=$1 [L]
RewriteRule ^used/cars/([^/]+)/([^/]+)/? used.php?carname=$2&carnumb=$1 [L]
RewriteRule ^compare/([^/]+)/([^/]+)/([^/]+)/? compare.php?car[]=$1&car[]=$2&car[]=$3 [L]
RewriteRule ^compare/([^/]+)/([^/]+)/? compare.php?car[]=$1&car[]=$2 [L]
RewriteRule ^compare/([^/]+)/? compare.php?car[]=$1 [L]

那是我的.htaccess,但情况非常糟糕!

我想做的是。

1)试图告诉谷歌pickndrive.info和www.pickndrive.info是一样的。

2)重定向/新(或使用)/ cars /(INT值)/(字符串)到X.php?carname =(string)& carnumb =(INT)

3)将/ cars /(STRING)重定向到搜索页面search.php?query = $ 1

4)重定向/汽车到browse.php?#tabs-all

5)将compare / * /(任意数量最多3次)重定向到compare.php?car [] = X1& car [] = X2& car = X3

远远就是它的工作原理。但我不能让目标号3/4工作,因为如果我这样做他们只是拧其余的:(。

有人可以指出我如何写一个漂亮的干净.htaccess mod-rewrite请:)

1 个答案:

答案 0 :(得分:2)

#3/4这样的东西?

RewriteRule ^cars/([^/]+)/? search.php?query=$1 [L]
RewriteRule ^cars/? browse.php [L]

你应该能够在最后添加它。请注意,#tabs-all不会转换为重写,因为它是浏览器在客户端处理的内容,而服务器无法执行任何操作。您可以添加一些javascript来自动让浏览器转到#tabs-all,在browse.php中使用一些javascript。

我不知道除了3“比较”规则之外是否有更简洁的方法来做#5,#1和#2都没问题。如果将“search.php”重命名(或符号链接)为“new.php”,则可以将这两个规则合并到:

RewriteRule ^([^/]+)/cars/([^/]+)/([^/]+)/? $1.php?carname=$3&carnumb=$2 [L]

但我认为最好明确排除/ new / cars /和/ used / cars /,因为该规则也会将“/ qwerty / cars /”重写为“qwerty.php?...”