1

嘿伙计们,我正在尝试转换看起来像这样的网址

example.com/sometype/author-name/sort-date 或 example.com/sometype/author-name/sort-date/something-value/

只需要一个通用的解决方案。

我对此很陌生,并且在正则表达式方面有点弱。所以我能写的是这个来识别

某种类型/作者姓名/排序日期/

或者

某种类型/作者姓名/排序日期/某物值/

/([a-zA-Z0-9]+)/ ([a-zA-Z0-9]+)-([a-zA-Z0-9]+)

我想把它改写成这种格式

example.come?data={"par1":"sometype","author":"name","sort":"date","something":"vale"}

或者

example.come?data={"par1":"sometype","author":"name","sort":"date"}

4

1 回答 1

0

首先了解您所要求的对于 mod_rewrite 来说是非常不寻常且极其棘手的。它不仅需要基于递归的代码,而且该代码的可读性也不是很好。

使用该注意事项启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放在您.htaccessDOCUMENT_ROOT目录下:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/([^/]+)(.*?)/?$ $1\",\"$2$3 [L]

RewriteRule ^([^-]+)-([^,]+)(.*)$ $1\":\"$2$3 [L]

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ /?data={\"part1\":\"$1\"} [L]
于 2012-05-18T23:43:09.080 回答