首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过.htaccess创建动态目录和子目录

如何通过.htaccess创建动态目录和子目录
EN

Stack Overflow用户
提问于 2017-02-17 04:41:22
回答 2查看 112关注 0票数 3

我正在尝试创建一个htaccess脚本,该脚本将为零个、一个或两个变量创建目录。

我正在使用的文件接受以下两个get变量。品牌和型号。

这是一个3步的页面。我目前的页面位于/new.php。这个页面允许用户选择第一个变量(在我的例子中,是一个汽车制造商)。通过在此页面上选择make,用户将转到/new.php?make=Acura。此页面现在显示所有Acura型号的列表。在这里,用户可以单击一个模型,他们将被定向到/new.php?make=Acura&model=TLX。他们现在可以选择一个子模型,并被带到一个信息页面。

所以我试着得到:

代码语言:javascript
复制
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/

这就是我在代码中得到的最大收获:

代码语言:javascript
复制
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^new/(.*)$ new.php?make=$1 [L,NC]

然而,我在此之后添加的任何变量似乎会破坏第一个目录?为什么会这样呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-17 04:58:53

您可以在站点根.htaccess中使用以下规则:

代码语言:javascript
复制
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]
票数 1
EN

Stack Overflow用户

发布于 2017-02-17 05:13:38

规则的顺序很重要。使用此规则开头,任何请求/new//new/XMake/new/XMake/XModel/匹配,以及以下规则将被忽略。

为了匹配其他规则,必须首先指定更具体的规则,例如

代码语言:javascript
复制
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]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42284200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档