使用.htaccess进行动态URL重写

瓦伦·斯里达兰(Varun Sridharan)

我对.htaccess重写非常陌生,并且正在尝试创建规则来动态重写URL。

例如,假设用户输入以下URL:

http://example.com/xxx/?user=2002

它将被重写为:

http://example.com/xxx/user/2002/

如果用户像这样传递多个参数:

http://example.com/xxx/?user=2002&activity=100&result=true

它应该变成:

http://example.com/xxx/user/2002/activity/100/result/

注意:所有查询字符串将动态生成。

这是我想出的:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /news/

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /news/index.php [L]
</IfModule>

更新

我试图使上面的代码和查询字符串重写代码一起工作。修改后的.htaccess如下所示:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /news/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /news/index.php [L]

# first take out query string from your /xxx/ URLs
RewriteCond %{QUERY_STRING} ^.+$
RewriteRule ^news/?$ %{REQUEST_URI}/%{QUERY_STRING}? [L]

# now convert & to /
RewriteRule ^([^&]+)&(.*)$ $1/$2 [L]

# now convert = to /
RewriteRule ^([^=]+)=([^=]+=.*)$ $1/$2 [L]    
RewriteRule ^([^=]+)=([^=]+)$ $1 [L,R]

# internal rule to replace /n1/v1/n2/v2 to QUERY_STRING
RewriteRule "^(news)/([^/]+)/([^/]*)(/.*)?$" /$1$4?$2=$3 [L,QSA]
</IfModule>
阿努巴瓦

这些确实是棘手的规则。将这些递归规则放在您的根.htaccess中:

RewriteEngine On
RewriteBase /news/

# first take out query string from your URLs
RewriteCond %{THE_REQUEST} \?\S+
RewriteRule ^/?$ %{QUERY_STRING}? [L]

# now convert all & to /
RewriteRule ^([^&]+)&(.*)$ $1/$2 [L]

# now convert all = to /
RewriteRule ^([^=]+)=([^=]+=.*)$ $1/$2 [L]
RewriteRule ^([^=]+)=([^=]+)$ $1/$2 [L,R]

# finally an internal rule to replace /n1/v1/n2/v2 to QUERY_STRING
RewriteRule "^([^/]+)/([^/]*)(?:/(.*))?$" $3?$1=$2 [L,QSA]

## Your existing stuff followed now
RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用.htaccess进行动态URL重写

来自分类Dev

使用MVC和ASP.Net Core进行动态URL重写

来自分类Dev

我需要使用子目录和查询字符串进行动态URL重写

来自分类Dev

我需要使用子目录和查询字符串进行动态URL重写

来自分类Dev

使用htaccess进行简单的URL重写

来自分类Dev

使用.htaccess进行平面URL重写

来自分类Dev

使用htaccess进行简单的URL重写

来自分类Dev

使用JavaScript进行动态php下拉列表(URL)

来自分类Dev

使用htaccess重写URL

来自分类Dev

如何在PHP中使用htaccess代码进行URL重写?

来自分类Dev

htaccess使用查询参数对URL进行内部重写

来自分类Dev

使用.htaccess进行Mod重写

来自分类Dev

使用.htaccess自动重写URL?

来自分类Dev

如何使用.htaccess重写URL

来自分类Dev

对URL使用htaccess重写规则

来自分类Dev

如何使用.htaccess重写URL

来自分类Dev

使用.htaccess重写部分url

来自分类Dev

如何使用 htaccess 重写 url

来自分类Dev

使用Linq进行动态过滤

来自分类Dev

使用NGINX进行动态路由

来自分类Dev

使用$ parse进行动态数组推送

来自分类Dev

如何使用Circe进行动态解码?

来自分类Dev

使用Vuetify进行动态计算

来自分类Dev

使用NodeJS进行动态对象遍历

来自分类Dev

使用Linq进行动态过滤

来自分类Dev

使用Maven进行动态Web项目

来自分类Dev

使用NGINX进行动态路由

来自分类Dev

使用Visual Studio进行动态调试

来自分类Dev

使用 char 进行动态分配