我希望能够处理指向应用程序的URL的以下段:
https://example.com/app/date/category
哪里
/app
是网站上的目录/date
是要传递的字符串值,例如; January_7
/category
是要传递的文本值,例如; births
并将其路由到index.php
进行处理。
这可以使用.htaccess
文件来完成吗?
答案 0 :(得分:1)
是的,您可以在.htaccess
中进行此操作。您希望如何将值传递到PHP脚本可以确切确定如何在.htaccess
中编写必要的指令。
这假设您的.htaccess
文件位于/app
子目录中,而index.php
也位于/app/index.php
中。
一种方法是使用FallbackResource
来指定所有应重写为该请求的URL,否则将触发404。例如:
FallbackResource /app/index.php
然后,在index.php
中,您将从PHP超全局变量:$_SERVER['REQUEST_URI']
解析所需的路径段。请注意,所有URL都被路由到index.php
,包括那些与您的模式不匹配的URL,因此由PHP相应地处理。
或者,如果您希望将各个路径段以GET参数的形式传递到index.php
,则可以执行以下操作:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\w+)/([\w-]+)$ index.php?date=$1&category=$1 [QSA,L]
前两个条件(RewriteCond
指令)确保该请求不是针对文件或目录的(以避免重写静态资源)。
(\w+)
捕获“日期”路径段,该路径段随后在 substitution 中使用$1
反向引用进行引用。 \w
是代表字符0-9
,a-z
,A-Z
和_
的简写字符类。
([\w-]+)
捕获“类别”路径段,该路径段随后在 substitution 中使用$2
反向引用进行引用。除上述字符外,这还允许使用-
(连字符)。
然后,在您的PHP代码中,访问$_GET['date']
和$_GET['category']
以访问您的值。
在第二个示例中,仅当请求与预期的URL请求模式匹配时才重写请求。 /app/<date>/<category>
。