.htaccess将嵌套目录转换为URL参数

时间:2019-06-03 04:58:59

标签: .htaccess url

我要转换的.htaccess中的

from: website.com/xi/abc

to: website.com/x/?s=abc

用户键入website.com/xi/abc 并且目录abc不存在,我只想要一个看起来更好的url,其中abc只是一个参数,并成为目录x中index.html的参数,参数名称是s,值abc

以下内容无法正常工作。我试图使/ abc只是abc并继续传递

  RewriteEngine On
  RewriteCond %{QUERY_STRING} ^xi/(.*)$
  RewriteRule ^(.+)$ x/index.html?s=$1 [QSA,L,NE]

这是第二次尝试,但也无效:

RewriteEngine On
RewriteCond "%{DOCUMENT_ROOT}/xi/(.*)" -f
RewriteRule "%{DOCUMENT_ROOT}/x/index.html?s=$1" [QSA,L,NE]

1 个答案:

答案 0 :(得分:1)

为了满足条件,我在%{QUERY_STRING}中将%{REQUEST_URI}换成RewriteCond。然后,我在RewriteRule匹配器前面加上了xi/,以便过滤掉该部分:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/xi/(.*)$
RewriteRule ^xi/(.+)$ x/index.html?s=$1 [QSA,L,NE]

# http://website.com/xi/abc -> http://website.com/x/index.html?s=abc
# http://website.com/other/abc -> No rewrite

在这种简单情况下,您甚至可以省略RewriteCond

RewriteEngine On
RewriteRule ^xi/(.+)$ x/index.html?s=$1 [QSA,L,NE]

编辑:我使用了this .htaccess tester