我正在尝试创建一个htaccess脚本,该脚本将为零个、一个或两个变量创建目录。
我正在使用的文件接受以下两个get变量。品牌和型号。
这是一个3步的页面。我目前的页面位于/new.php。这个页面允许用户选择第一个变量(在我的例子中,是一个汽车制造商)。通过在此页面上选择make,用户将转到/new.php?make=Acura。此页面现在显示所有Acura型号的列表。在这里,用户可以单击一个模型,他们将被定向到/new.php?make=Acura&model=TLX。他们现在可以选择一个子模型,并被带到一个信息页面。
所以我试着得到:
new.php to go to /new/
new.php?make=XMake to go to /new/XMake/
and new.php?make=XMake&model=XModel to go to /new/XMake/XModel/这就是我在代码中得到的最大收获:
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^new/(.*)$ new.php?make=$1 [L,NC]然而,我在此之后添加的任何变量似乎会破坏第一个目录?为什么会这样呢?
发布于 2017-02-17 04:58:53
您可以在站点根.htaccess中使用以下规则:
Options -MultiViews
RewriteEngine On
# skip all files and directories from rewrite rules below
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^new/([\w-]+)/([\w-]+)/?$ new.php?make=$1&model=$2 [L,NC,QSA]
RewriteRule ^new/([\w-]+)/?$ new.php?make=$1 [L,NC,QSA]
RewriteRule ^new/?$ new.php [L,NC]发布于 2017-02-17 05:13:38
规则的顺序很重要。使用此规则开头,任何请求/new/、/new/XMake或/new/XMake/XModel/匹配,以及以下规则将被忽略。
为了匹配其他规则,必须首先指定更具体的规则,例如
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^new/(.+?)/(.+)$ new.php?make=$1&model=$2 [L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^new/(.+)$ new.php?make=$1 [L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^new/$ new.php [L,NC]https://stackoverflow.com/questions/42284200
复制相似问题