Php .htaccess代码mod重写代码清理

Php .htaccess代码mod重写代码清理,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我是一个新的在这个模块重写的事情 我正在尝试做一些基本的重定向 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.

我是一个新的在这个模块重写的事情

我正在尝试做一些基本的重定向

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]
那是我的。但它的状况非常糟糕

我想做的是。 1) 试图告诉谷歌pickdrive.info和www.pickdrive.info是一样的

2) 将/new(或used)/cars/(INT-value)/(string)重定向到X.php?carname=(string)和carnumb=(INT)

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

4)重定向/cars到browse.php?#选项卡全部

5) 重定向compare/*/(最多3次)以比较.php?car[]=X1&car[]=X2&car=X3

好吧,到目前为止,这是它的工作。但我无法让3/4号目标发挥作用,因为如果我这样做,他们只会把其余的都搞糟:(

有人能告诉我如何写一个干净的.htaccess mod rewrite吗:)

像这样的3/4

你应该可以在最后加上这个。请注意,
#tabs all
不会被翻译为重写,因为这是浏览器在客户端处理的事情,而服务器则无能为力。您可以添加一些javascript自动让浏览器进入#选项卡,所有这些选项卡都在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”…“

问题是如果我这样做了,那么重写规则^cars/?browse.php[L]或任何其他基于cars/的规则?它还会混淆从new/cars/qwerty/qwerty加载的图像和js文件。
^
指示表达式必须在开头匹配。所以“^cars/”永远不会匹配“new/cars”
RewriteRule ^([^/]+)/cars/([^/]+)/([^/]+)/? $1.php?carname=$3&carnumb=$2 [L]